如果 csv 文件中每行的第一列仅存在正则表达式,则删除一行

如果 csv 文件中每行的第一列仅存在正则表达式,则删除一行

我有以下逗号分隔的数据(为了视觉清晰而使用空格):

 1 2014 23 2352 19.24 7.18
 1 2014 23 2353 19.78 4.65
24 2014 23 2354 20.26 25.34
 1 2014 23 2355 26.65 42.76
 1 2014 23 2356 27.34 56.356
 1 2014 23 2357 29.24 45.4
24 2014 23 2358 30.23 345.27
 1 2014 23 2359 23.23 345.21
 1 2014 24 0000 12.53 1.98
 1 2014 24 0001 7.24  12.3
24 2014 24 0002 15.68 90.8

我只想删除以 24 开头的每一行(或者保留以 1 开头的每一行,无论哪种方式)。

所以期望的输出是:

 1 2014 23 2352 19.24 7.18
 1 2014 23 2353 19.78 4.65
 1 2014 23 2355 26.65 42.76
 1 2014 23 2356 27.34 56.356
 1 2014 23 2357 29.24 45.4
 1 2014 23 2359 23.23 345.21
 1 2014 24 0000 12.53 1.98
 1 2014 24 0001 7.24  12.3

我努力了

sed '/24/d' (filename)

但这会删除整个文件中 24 的每个实例,如下所示(不需要!):

1 2014 23 2353 19.78 4.65
1 2014 23 2355 26.65 42.76
1 2014 23 2356 27.34 56.356
1 2014 23 2359 23.23 345.21

答案1

With awk(在行1首打印所有内容):

awk '/^1/{print $0}'

使用sed-n禁止打印所有内容的选项):

sed -n '/^1/p'

使用grep(也许不是文本处理的最佳选择,但在这种情况下已经足够好了):

grep '^1'

答案2

grep -v ^24只保留不以 24 开头的行

相关内容