以下を含む行を置き換えるコマンドを探しています。ただ列と「空」の行にはゼロ個の数字があります。
たとえば、次のような入力があります。
Taj_Mahal Agra
0
0
Chichen_Itza Yucatán
0
0
Christ_the_Redeemer Rio_de_Janeiro
0
0
Colosseum Rome
0
0
Great_Wall_of_China China
0
0
Machu_Picchu Cuzco_Region
0
0
Petra Ma'an_Governorate
0
0
Great_Pyramid_of_Giza Egypt
0
0
出力は次のとおりです。
Taj_Mahal Agra
Chichen_Itza Yucatán
Christ_the_Redeemer Rio_de_Janeiro
Colosseum Rome
Great_Wall_of_China China
Machu_Picchu Cuzco_Region
Petra Ma'an_Governorate
Great_Pyramid_of_Giza Egypt
ベストアンサー1
投稿を編集した後、サンプル入力の行に「単に」0が含まれていないようです。これには多くのスペースとゼロが含まれます。この場合は awk を使用してください。
awk 'NF==1 && $1=="0" { $0="" } { print }'
$ 0は行全体を表します。 NF はフィールド数を示します。 $ 1は最初のフィールドを表します。デフォルトでは、awkは先行/末尾のスペースを削除します。
または、正規表現の一致を使用します。
awk '/^ *0 *$/ { $0="" } { print }'
{ print }
解決策はsedに置き換えることで、より簡潔で秘密にすることができますが1
、それでもsedはまだ簡潔です。
sed 's/^ *0 *$//'
最初の awk 提案は、先行スペースと末尾のスペース (タブやその他のロケール依存文字を含めることができます) を無視します。 2番目のawkおよびsedメソッドは先行/末尾のスペースを無視します。