junxnone / linux

Linux wiki
https://junxnone.github.io/linux/
0 stars 0 forks source link

Tools Text sed #27

Open junxnone opened 4 years ago

junxnone commented 4 years ago

sed 文件流编辑器

UseCase

插入

插入方式 cmd
插入内容到指定行之前 sed -i '3i\this is a insert line' test.txt
插入内容到指定行之后 sed -i '3a\xxxx' file
在每行行首添加字符 HEAD sed 's/^/HEAD&/g' file
在每行行尾添加字符TAIL sed 's/$/&TAIL/g' file

删除

删除 Commands
删除字符 sed -i s#pattern##g filename
删除包含 xxx 的行 sed -i '/xxx/d' filename
删除以 xxx 开始的行 sed -i '/^xxx/d' filename
删除第 n sed -i 'nd' filename
删除 n ~ m sed -i 'n,md' filename
删除最后一行 sed -i '$d' filename
删除指定变量行号 sed -i "${var1},${var2}d" filename

这里引号必须为双引号

替换

替换 Commands
替换 old 为 new sed -i s#old#new#g filename
替换以 1 开头的字符串 为 0 sed -i 's/^1/0/g' filename
替换特殊字符 使用 \ 转义 sed -i #s/\“aab/bbc/g' filenam
替换以<path开头,任意字符后跟着\的字符串为path> sed -i 's/\<path.*\\/path\>/g' *
替换当前文件夹下的所有文件 sed -i s#old#new#g `grep -rl "old" .`
查找关键字并删除# sed -i '/keyword/s/^#//' input.txt
查找关键字并替换 xxx sed -i '/keyword/s/xxx/ooo/' input.txt

用于labelimg pascal voc 标记文件中 去掉 local path

sed 使用变量

'"$var"'

在指定字符前后添加内容

前后 Commands
指定字符之前添加 sed -i 's/search_word/insert_word&/' your_file
指定字符之后添加 sed -i 's/search_word/&insert_word/' your_file

Reference

junxnone commented 4 years ago

junxnone/linuxwiki#2