Shell脚本:在文本文件中搜索多个字符串,并显示包含该字符串的行

时间:2012-02-16 15:43:48

标签: shell unix search

我是shell脚本世界的新手。我已对此做了一些研究,但到目前为止似乎没有起作用。

我想要做的是我有两个txt文件。我想从文件B中的文件A中搜索所有字符串,并显示文件B中包含字符串的所有行。

到目前为止,我只有这个(请不要笑)......

#!bin/sh
for LINE in 'cat $1'
do
grep '$LINE' $2
done

我想我想让它变得动态,所以我可以执行类似这样的事情

./script.ksh fileA.txt fileB.txt

任何建议都会受到赞赏,非常感谢!

3 个答案:

答案 0 :(得分:3)

无需编写脚本:

grep -f $1 $2

答案 1 :(得分:0)

您非常接近目标,但代码中存在一些小错误。

这应该有效:

#!/bin/sh
for LINE in `cat $1`
do
    grep "$LINE" $2
done

以下是一个例子:

<强> fileA.txt:

Hi
Hello
Hairy
Harry
Hates
His
Home

<强> fileB.txt:

James Bond likes Harry
Sylvia is cool
Fiona is mad
Hello there
Hairy toenails

<强>输出:

Hello there
Hairy toenails
James Bond likes Harry

答案 2 :(得分:0)

配合,你的第一行包含两个错误,应该是这样的:

#!  /bin/sh  

我放了一些额外的空间,以便您看到差异,这可能是您的脚本无法正常工作的原因。

没什么大不了的,错别字发生了,Bash在白色空间方面可能是一个真正的PIA。

顺便说一句,好老差异怎么样?

diff file1 file2

man 1 diff