我需要快速有效地解决以下问题(我正在处理许多文件。)但是例如:
我有两个文件:file2
Hello
Goodbye
Salut
Bonjour
和file1
Hello, is it Me you're looking for?
我想在文件2中找到文件2中存在的任何单词,然后将该单词转换为小写。
我可以通过执行以下操作来查看文件中的单词:
grep -f file2.txt file1.txt
并返回
Hello
所以现在我要转换为
hello
以便最终输出
hello, is it Me you're looking for?
如果我匹配多个文件:
grep -f file2.txt *_infile.txt
输出将存储在各自单独的outfiles中。
我知道我可以使用类似tr的东西转换为小写,但我只知道如何在大写字母的每个实例上执行此操作。我只想将两个文件中常见的单词从大写转换为小写。
感谢。
答案 0 :(得分:1)
我会以不同的方式解决问题。
首先,我会在grep中标记匹配。 --color=always
效果很好,虽然它有些麻烦且可能在检测中不可靠。然后我会更改标记为sed
或perl
的匹配:
grep --color=always -F -f file2.txt file1.txt | \
perl -p -e 's/\x1b.*?\[K(.*?)\x1b.*?\[K/\L\1/g'
神秘的RE匹配匹配前的着色转义序列,在匹配后立即对转义转义序列进行去色,并将其间的所有内容捕获到组1.然后它将小写\L
转换应用于捕获。可能GNU sed也可以这样做,但perl可能更便携。