我是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中打印输出。请帮忙。
答案 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