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。
我有一个脚本,它获取单词列表并在文件中搜索它们。我使用 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。