从不符合条件的文件中删除行/行

时间:2015-08-18 21:25:21

标签: bash

如何从中删除不符合特定条件的行。

$ head -n 50 countries_lat_long_int_code2.csv | tail -n 25
BJ,9.30769,2.315834,Benin,229
BM,32.321384,-64.75737,Bermuda,1
BN,4.535277,114.727669,Brunei
BO,-16.290154,-63.588653,Bolivia,591
BR,-14.235004,-51.92528,Brazil,55
BS,25.03428,-77.39628,Bahamas,1
BT,27.514162,90.433601,Bhutan,975
BV,-54.423199,3.413194,Bouvet Island
BW,-22.328474,24.684866,Botswana,267
BY,53.709807,27.953389,Belarus,375
BZ,17.189877,-88.49765,Belize,501
CA,56.130366,-106.346771,Canada,1
CC,-12.164165,96.870956,Cocos [Keeling] Islands
CD,-4.038333,21.758664,Congo [DRC]
CF,6.611111,20.939444,Central African Republic,236
CG,-0.228021,15.827659,Congo [Republic]
CH,46.818188,8.227512,Switzerland,41
CI,7.539989,-5.54708,Côte d'Ivoire
CK,-21.236736,-159.777671,Cook Islands,682
CL,-35.675147,-71.542969,Chile,56
CM,7.369722,12.354722,Cameroon,237
CN,35.86166,104.195397,China,86
CO,4.570868,-74.297333,Colombia,57
CR,9.748917,-83.753428,Costa Rica,506
CU,21.521757,-77.781167,Cuba,53

例如,以下内容没有尾随逗号,后面跟着一行数字

BN,4.535277,114.727669,Brunei
BV,-54.423199,3.413194,Bouvet Island
CC,-12.164165,96.870956,Cocos [Keeling] Islands
CD,-4.038333,21.758664,Congo [DRC]
CI,7.539989,-5.54708,Côte d'Ivoire

我如何删除这些行或所有没有尾随逗号的行后跟行尾的数字?我希望在bash中这样做,我知道我可以在excel中完成它,但我宁愿在bash中这样做。

2 个答案:

答案 0 :(得分:3)

您可以使用grep

grep -E ',[0-9]+$' file
BJ,9.30769,2.315834,Benin,229
BM,32.321384,-64.75737,Bermuda,1
BO,-16.290154,-63.588653,Bolivia,591
BR,-14.235004,-51.92528,Brazil,55
BS,25.03428,-77.39628,Bahamas,1
BT,27.514162,90.433601,Bhutan,975
BW,-22.328474,24.684866,Botswana,267
BY,53.709807,27.953389,Belarus,375
BZ,17.189877,-88.49765,Belize,501
CA,56.130366,-106.346771,Canada,1
CF,6.611111,20.939444,Central African Republic,236
CH,46.818188,8.227512,Switzerland,41
CK,-21.236736,-159.777671,Cook Islands,682
CL,-35.675147,-71.542969,Chile,56
CM,7.369722,12.354722,Cameroon,237
CN,35.86166,104.195397,China,86
CO,4.570868,-74.297333,Colombia,57
CR,9.748917,-83.753428,Costa Rica,506
CU,21.521757,-77.781167,Cuba,53

答案 1 :(得分:0)

使用cat file | awk '/[,][0-9]+$/'