Jas*_*ost 5 bash grep awk sed command-line
我有一个包含单词(每行一个)的文件,例如
狗
鱼
猫
鞋
我有一个 CSV 格式的辅助文件,例如
1,鞋子,红色
2,苹果,黑色
3,雾,蓝色
我想使用 grep 将第一个文件作为搜索模式,如果辅助文件中的一行在第一个文件中包含一个单词,我想完全删除辅助文件中的该行。
我不确定 grep 甚至是解决这个问题的方法。
编辑:bash 脚本
kin*_*ine 10
您可以使用grep
's-f
选项(小写-f
,而不是-F
)执行此操作:
% echo -e 'Dog\nFish\nCat\nShoes' > ./file1.txt
% echo -e '1,shoes,red\n2,apple,black\n3,fog,blue' > ./file2.csv
# Grab all lines from the CSV that match a pattern from file1:
% grep -if ./file1.txt ./file2.csv
1,shoes,red
# Grab all lines from the CSV that DON'T match a pattern from file1:
% grep -vif ./file1.txt ./file2.csv
2,apple,black
3,fog,blue
Run Code Online (Sandbox Code Playgroud)
详细解释:
grep
— 不言自明-v
— 表示“返回与输入模式不匹配的行”-i
— 表示“不区分大小写的匹配”(因为您的第一个文件有大写字母而 CSV 没有)-f
— 表示“将指定文件 ( file1.txt
)中的每一行解释为用于匹配的模式”根据您想要的结果和文件的内容,您可能还需要阅读-F
和-w
选项。
如果您需要就地编辑文件,我认为您可以使用sed
's-f
选项执行此操作,但sed
将文件的每一行解释为命令,而不是像do 这样的简单模式grep
。
归档时间: |
|
查看次数: |
11941 次 |
最近记录: |