我有以下文件
aaa1.bbb1.ccc toto
aaa1.bbb1.ddd. titi
aaa2.bbb2.ccc
aaa2.bbb2.eee tza
aaa2.bbb2.ddd.
我想在每行的开头添加一个字符串。这个字符串将是" OK"如果该行的第一个字段以.
结束,字符串将为" NOK"如果该行的第一个字段未以.
字段的分隔符是空格
基于上面的例子,命令的输出将是:
NOK aaa1.bbb1.ccc toto
OK aaa1.bbb1.ddd. titi
NOK aaa2.bbb2.ccc
NOK aaa2.bbb2.eee aza
OK aaa2.bbb2.ddd.
我怎么能这样做?
答案 0 :(得分:5)
awk '{print ($1 ~ /\.$/ ? "OK" : "NOK"), $0}' file
答案 1 :(得分:1)
这样做:
awk '{ print $1 ~ /\.$/ ? "OK" : "NOK", $0 }'
我们说:对于每一行,如果第一个字段以句点结束,则打印OK,否则为NOK,然后打印整行。
答案 2 :(得分:0)
通过sed
,
sed '/.*\. .*/ s/^\(.*\)$/OK \1/g; /\.$/ s/^\(.*\)$/OK \1/g' file | sed '/^[^O]/ s/^\(.*\)$/NOK \1/g'
输出:
NOK aaa1.bbb1.ccc toto
OK aaa1.bbb1.ddd. titi
NOK aaa2.bbb2.ccc
NOK aaa2.bbb2.eee tza
OK aaa2.bbb2.ddd.
答案 3 :(得分:0)
sed -r '/^[^ ]\{1,\}\.\( \|$\)/ {s//OK &/;b;};s/^/NOK /' YourFile
假设空间只是空格char(如果没有用[:space:]
或[:blank:]
替换空格字符,但有时不接受系统上的值)