我有一个如下所示的文件:
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
这会挑选出以下几行开始使用字符串Cn
orCx
并将这些行保存到名为newfile
.
这仍然会挑选出以 例如Cxx
或开头的行Cn!
。
使用awk
:
awk '$1 == "Cn" || $1 == "Cx"' file >newfile
这将进行字符串比较而不是正则表达式匹配。它只会让那些第一个空白分隔列恰好是Cn
或Cx
没有其他内容的行通过。
答案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