复制具有特定字符的行并将其粘贴到新文件中

复制具有特定字符的行并将其粘贴到新文件中

我有一个如下所示的文件:

Cx  100 350

C   110 320

Cn  300 250

Cb  200 280

Cx  300 210

我想要一些如何使用 bash 脚本来选择包含字符“Cx”和“Cn”的特定行并将它们粘贴到新文件中。

答案1

使用grep

grep '^C[nx]' file >newfile

这会挑选出以下几行开始使用字符串CnorCx并将这些行保存到名为newfile.

这仍然会挑选出以 例如Cxx或开头的行Cn!

使用awk

awk '$1 == "Cn" || $1 == "Cx"' file >newfile

这将进行字符串比较而不是正则表达式匹配。它只会让那些第一个空白分隔列恰好是CnCx没有其他内容的行通过。

答案2

perl -MList::MoreUtils=any -lane '
   print if any { $F[0] eq $_ } qw/Cx Cn/;
' input.txt

加载模块 List::MoreUtils 来访问 any 例程,该例程从多个值中选择第一个真值语句。如果您想添加/修改要检查的第一个字段,给出的解决方案是可扩展的。

如果找不到上述模块,则可以使用以下代码:

perl -lane 'for my $e ( qw/Cx Cn/ ) { print,last if $F[0] eq $e }' input.txt

相关内容