我目前正在尝试编写一个搜索文件的sed命令,并删除文件中包含多个单词的行。但是,我需要它来排除删除以特定符号开头的行(使用" [")
这是我到目前为止(这不包括排除一行的代码,只是删除包含多个单词的行):
sed -E '/^\s*\S+\s*$/!d' $1
我想用这样的东西来排除以左括号开头的搜索行(" ["):
sed -E '/a/!d/^\s*\S+\s*$/!d' $1
但是,我收到此错误:
sed: -e expression #1, char 6: extra characters after command
我确定这是一件小而荒谬的事情。有人能帮忙解决这个问题吗?欢呼声。
答案 0 :(得分:3)
awk
命令会更简单:
awk 'NF<2 || /(^| )\[/' file
此awk
只会打印少于两个单词的行或以[
开头的单词
答案 1 :(得分:1)
通过sed,
sed -n '/^ *[^ ]\+ \+[^ ]\+\|^ *\[/p' file
答案 2 :(得分:0)
我不确定你的命令,但是下面会做的伎俩:
sed -E '/^\s*\S+\s*$|^\[/!d' $1
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed '/^[^[]\S*\s\+\S/d' file
删除不以[
开头并且不止一个字的行。