다음을 포함하는 줄을 바꾸는 명령을 찾고 있습니다.오직열과 "빈" 행에 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 방법은 선행/후행 공백을 무시합니다.