我有一个脚本,它接受一个单词列表并在文件中搜索它们。我使用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'
在我的脚本中它不起作用,所有结果都是空的。
谢谢!
答案 0 :(得分:1)
为什么不把它保存在一个awk命令中呢?从你到目前为止告诉我们的所有你需要的是:
awk 'NR==FNR{ticks[$9]; next} $3 in ticks' FS="," "$file" FS=" " "$second_file"
如果这样做并不符合您的要求,请编辑您的问题以澄清您的要求并提供更具代表性的输入/输出。