文件.txt:
line: this-is-some-text
line2: this-is-some-other-text
例子:
sed 's#line:.*##g' File.txt
line2: this-is-some-other-text
正如您所看到的,第一行已被删除,但留下了一个空行。
你能执行sed
这样它就不会在删除时留下空行吗?
答案1
您可以使用delete 命令而不是substitute 命令:
$ cat File.txt
line: this-is-some-text
line2: this-is-some-other-text
$ sed '/line:/d' File.txt
line2: this-is-some-other-text
您可能需要考虑将表达式锚定到行的开头,如sed '/^line:/d' File.txt
。
或者,考虑 grep 反向匹配:grep -v '^line:' File.txt
。
答案2
使用 awk:
$ awk '/line:/{next}1'
$ awk '/^line:/{next}1' #For pattern at the start of line
使用编辑:
$ printf '%s\n' 'v/line:/p' | ed -s file
$ printf '%s\n' 'v/^line:/p' | ed -s file # For pattern at the start of line