AWKを使用して数字「0」のみを含む行を空の行に置き換える方法は?

AWKを使用して数字「0」のみを含む行を空の行に置き換える方法は?

以下を含む行を置き換えるコマンドを探しています。ただ列と「空」の行にはゼロ個の数字があります。

たとえば、次のような入力があります。

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メソッドは先行/末尾のスペースを無視します。

おすすめ記事