如何处理SED中只有4个单词的行?
这就是我设法做的,但它不起作用:
sed -e '/[ ]*[^ ]+[ ]*[^ ]+[ ]*[^ ]+[ ]*[^ ]+[ ]*/!d' -e 'other commands...' fileName
这应该是便携的:
sed -n '
/^[[:blank:]]*\([[:alpha:]]\{1,\}[[:blank:]]\{1,\}\)\{3\}[[:alpha:]]\{1,\}[[:blank:]]*$/ {
# capture the 1st word of every 4 word line and print it 3 times
s/^[[:blank:]]*\([[:alpha:]]\{1,\}\).*/\1 \1 \1/
p
}
' > temp-file
AWK
可能是您的任务更容易的工具。使用awk内置变量NF
检查一行中的字段数是否等于4。
awk 'NF==4' filename
将是一个很好的起点。如果您希望将更改写入文件,可以使用GNU AWK
的inplace edit选项,如下所示
gawk -i inplace 'NF==4' filename