我正在寻找一个命令来替换包含的行仅有的其列中的数字为 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
编辑您的帖子后,示例输入中的行似乎不包含“仅”零。它们包含许多空格和一个零。如果是这种情况,使用 awk:
awk 'NF==1 && $1=="0" { $0="" } { print }'
$0 指整行。 NF指的是字段的数量。 $1 指的是第一个字段。默认情况下,awk 会去除前导/尾随空格。
或者,使用正则表达式匹配:
awk '/^ *0 *$/ { $0="" } { print }'
{ print }
通过替换为可以使解决方案更加简洁(并且神秘)1
,但即便如此, sed 仍然会更加简洁:
sed 's/^ *0 *$//'
请注意,第一个 awk 建议忽略前导和尾随空白(可能包括制表符和其他与语言环境相关的字符)。第二个 awk 和 sed 方法仅忽略前导/尾随空格。