我有这个sed命令用于删除逗号后的空格.
sed -e 's/,\s\+/,/g' example.txt
Run Code Online (Sandbox Code Playgroud)
如何更改它,它将仅在特定的行号之间进行修改.
(例如在第二和第三行之间).
小智 6
由于OSX(BSD sed)与linux(GNU)sed有一些语法差异,所以我想从我的一些来之不易的笔记中添加以下内容:
OSX(BSD)SED在同一文件中的(地址)块(起点和终点模式(/../)或行#s)中查找/替换(通过&via&via§ion 4.20 here):
句法:
$ sed '/start_pattern/,/end_pattern/ [operations]' [target filename]
Run Code Online (Sandbox Code Playgroud)
标准查找/替换示例:
$ sed -i '' '2,3 s/,\s\+/,/g' example.txt
$ sed -i '' '/DOCTYPE/,/body/ s/,\s\+/,/g' example.txt
Run Code Online (Sandbox Code Playgroud)
使用复杂的运算符和分组查找/替换示例(由于流使用标准输入而无法对语法进行分组操作).分组中的所有语句必须在单独的行上,或者用分号分隔:
复杂运算符示例(将删除包含匹配项的整行):
$ sed -i '' '2,3 {/pattern/d;}' example.txt
Run Code Online (Sandbox Code Playgroud)
多文件查找+ sed:
$ find ./ -type f -name '*.html' | xargs sed -i '' '/<head>/,/<\/head>/ {/pattern/d; /pattern2/d;}'
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人!