AWK를 사용하여 숫자 "0"만 포함된 행을 빈 행으로 바꾸는 방법은 무엇입니까?

AWK를 사용하여 숫자 "0"만 포함된 행을 빈 행으로 바꾸는 방법은 무엇입니까?

다음을 포함하는 줄을 바꾸는 명령을 찾고 있습니다.오직열과 "빈" 행에 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이 포함되어 있지 않은 것으로 보입니다. 여기에는 많은 공백과 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 제안은 선행 및 후행 공백(탭 및 기타 로케일 종속 문자를 포함할 수 있음)을 무시합니다. 두 번째 awk 및 sed 방법은 선행/후행 공백을 무시합니다.

관련 정보