次の情報テーブルがあります。
ko:K00624
ko:K20215
1.5.3.5
ko:K01106
2.3.41.5
私は次の出力が欲しい:
ko:K00624
ko:K20215
-
ko:K01106
-
次のコマンドを使用しましたが、機能しません。私をお勧め
cat filename | awk '{if($1!~"ko"); print "-") print }' | less
答え1
可能な修正されたコマンドバージョンawk
:
awk '{if($1!~"ko") print "-"; else print }' filename
そうすることはより現地語かもしれませんが、
awk '$0 !~ /^ko/ {$0 = "-"} {print}' filename
または(略式)
awk '!/^ko/ {$0 = "-"} 1' filename
別のGNUsed
代替(c
コマンドの代わりにs
コマンドを使用):
sed '/^ko/!c-' filename
答え2
sed -e '/^ko/!s/.*/-/' input_file.dat
つまり、「ja」で始まらないすべての行に対して、行全体をダッシュに置き換えることができます。その他の事項はそのままにしてそのまま印刷してください。
答え3
または…。
~]$ echo -e "ko:K00624\nko:K20215\n 1.5.3.5\nko:K01106\n2.3.41.5" \
| while read line ; do if [[ $line =~ ko ]] ; then echo $line ; else echo "-" ; fi ; done
ko:K00624
ko:K20215
-
ko:K01106
-
答え4
私のsed
答えは次のとおりです。 FWIW
sed s/^[^ko].*/-/g filename
で始まらないすべてのko
行を置き換えるだけです-
。 (コメントとして追加したかったのですが、まだ担当者はいません。)