我有以下信息表:
ko:K00624
ko:K20215
1.5.3.5
ko:K01106
2.3.41.5
Run Code Online (Sandbox Code Playgroud)
我想要这样的输出:
ko:K00624
ko:K20215
-
ko:K01106
-
Run Code Online (Sandbox Code Playgroud)
我使用了以下命令,但它不起作用。请建议我
cat filename | awk '{if($1!~"ko"); print "-") print }' | less
Run Code Online (Sandbox Code Playgroud)
您的awk
命令的可能更正版本:
awk '{if($1!~"ko") print "-"; else print }' filename
Run Code Online (Sandbox Code Playgroud)
虽然这样做可能更白话
awk '$0 !~ /^ko/ {$0 = "-"} {print}' filename
Run Code Online (Sandbox Code Playgroud)
或(更短的形式)
awk '!/^ko/ {$0 = "-"} 1' filename
Run Code Online (Sandbox Code Playgroud)
另一个 GNUsed
替代方案(使用c
命令而不是s
命令):
sed '/^ko/!c-' filename
Run Code Online (Sandbox Code Playgroud)
小智 5
sed -e '/^ko/!s/.*/-/' input_file.dat
Run Code Online (Sandbox Code Playgroud)
意思是,对于所有不以 "ko" 开头的行,只需将整行替换为破折号即可。对于其他所有内容,保持原样并打印不变。