使用Unix Shell脚本比较另一个csv文件中一个csv文件的一组字符串

时间:2017-06-11 06:07:36

标签: bash shell csv unix

我是bash Shell脚本的新手。我要求我有一个查找文件(csv),其中有一组字符串,如下所示。

文件1:

text1
text2
text3

我必须检查file1中的字符串是否存在于file2中。

file2的:

s.no    desc
1       text5
2       text3
3       text2
4       text9

如果file1中的字符串在file2中,那么我必须使用s.no和找到的字符串在新文件file3中打印输出。请帮忙。

1 个答案:

答案 0 :(得分:1)

使用

grep --file=file1 file2

grep -f file1 file2

来自grep的手册页

  -f FILE, --file=FILE
          Obtain  patterns  from  FILE, one per line.  
          The empty file contains zero patterns, and therefore matches nothing.  (-f is
          specified by  POSIX.)

注意:如果您只想要精确匹配字词,请添加-w。因此footext3bar不会与text3匹配。

同样file1包含常规表达关键字,例如*^,然后也添加-F

如此更新的命令将是

grep -Fwf file1 file2

实施例

bash-4.2$ cat file1
text1
text2
text3
bash-4.2$ cat file2
s.no    desc
1       text5
2       text3
3       text2
4       text9
bash-4.2$
bash-4.2$ grep --file=file1 file2
2       text3
3       text2