パターンが見つからない場合は、特殊文字またはスペースを入力してください。

パターンが見つからない場合は、特殊文字またはスペースを入力してください。

次の情報テーブルがあります。

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行を置き換えるだけです-。 (コメントとして追加したかったのですが、まだ担当者はいません。)

関連情報