命令sed
类别: Command 标签: Linux sed exec目录
字符串
分隔符号可以自由更换
$ echo "Hi, John." | sed 's/Hi/HI/g'
HI, John.
$ echo "Hi, John." | sed 's#Hi#HI#g'
HI, John.
$ echo "Hi, John." | sed 's-Hi-HI-g'
HI, John.
单引号’
$ echo "'s', 'm', 'l', 'x'" | sed 's/'"'"'s'"'"', '"'"'m'"'"', '"'"'l'"'"', '"'"'x'"'"'/'"'"'s'"'"', '"'"'l'"'"'/g'
's', 'l'
使用转义符\ ([])
$ echo "['hello', 'world']" | sed 's/\[/</g'
<'hello', 'world']
文件
读取文件的内容,替换后输出。
$ cat /etc/system-release
CentOS Linux release 8.1.1911 (Core)
$ sed 's, release .*$,,g' /etc/system-release
CentOS Linux
这个示例来源于 CentOS8 的配置文件 /etc/default/grub
编辑或更新文件内容 (-i)
sed -i 's/\['"'"'s'"'"', '"'"'m'"'"', '"'"'l'"'"', '"'"'x'"'"'\]/\['"'"'s'"'"', '"'"'l'"'"'\]/g' yolov5/weights/download_weights.sh
多个文件 (-exec {}) ^指定行的开始位置
find labels/ -name '*.txt' -exec sed -i 's/^1 /0 /g' {} +
同时匹配 (OR |)
find labels/ -name '*.txt' -exec sed -i -E 's/^1|2 /0 /g' {} +
匹配到行尾 (.*)
sed -i 's/nc: .*/nc: 2/g' yolov5?.yaml
匹配数字 ([0-9]*)
sed -i 's/nc: [0-9]*/nc: 2/g' yolov5?.yaml