bash 脚本中的 xargs 和 grep

xargs and grep in bash script

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

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

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

问题是 grep 有时会 return 正确的股票代码和其他附加了 .# 的代码。

例如:

LB
LB.1

将被上述命令 return 编辑。

执行搜索的文件(上面的$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

它只有 returnLB 而不是 LB.1,这正是我想要的。

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

grep '\s{}\s'

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

谢谢!

为什么不将它保留在一个 awk 命令中?根据您到目前为止告诉我们的内容,您只需要:

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

如果这不能满足您的要求,请编辑您的问题以阐明您的要求并提供更具代表性的 input/output。