bash脚本

时间:2015-09-22 01:39:39

标签: bash awk grep xargs

我有一个脚本,它接受一个单词列表并在文件中搜索它们。我使用xargs来获取列表中的单词并将它们传递给grep。

awk 'BEGIN { FS = ","; } { print $9 }' $file | xargs -I {} grep -w {} $second_file

第一个awk命令在$ file中搜索第9列。它生成一个约50个名称的列表,如YHOO,AAPL,LB等(股票代码符号)。然后我使用xargs将结果传递给grep并搜索唯一的事件。

问题是grep有时会返回正确的自动收报机符号和其他带有。#附加符号的符号。

例如:

LB
LB.1
上面的命令将返回

执行搜索的文件(上面的$ second_file)看起来像这样

2006-09-30      006733  LB      501797104       25504010        10      26.490000       2006-09-30      28.940000       2006-12-31      0.092488

在终端中,我可以输入

grep  '\sLB\s'   $second_file

它只返回LB而不是LB.1,这就是我想要的。

我如何复制' \ sLB \ s'在脚本中,使用xargs?如果我写

grep '\s{}\s'

在我的脚本中它不起作用,所有结果都是空的。

谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不把它保存在一个awk命令中呢?从你到目前为止告诉我们的所有你需要的是:

awk 'NR==FNR{ticks[$9]; next} $3 in ticks' FS="," "$file" FS=" " "$second_file"

如果这样做并不符合您的要求,请编辑您的问题以澄清您的要求并提供更具代表性的输入/输出。