我有一个文件夹(Transactions),里面有数百个 .csv 文件。我想在所有 csv 文件中搜索特定字符串,并获取包含该字符串的每一行的输出。最好输出到 txt 文件。例如,假设我想查找包含名称 John Doe 的任何记录。在 Windows 中,我将使用以下命令:
FINDSTR /n /i "John.Doe" *.csv >> johndoe.txt
/n
给我行号/i
忽略大小写"."
分隔单词*.csv
搜索所有以 .csv 结尾的文件,以及>>
输出到包含所有包含该字符串的数据的新文件(到同一个文件夹)。
我正在寻找一个类似的命令,用于 Ubuntu 终端,它将搜索所有 .csv 文件并将所有匹配项输出到 txt 文件。我研究过 grep 和 awk,但不知道如何使用它们。任何帮助都将不胜感激。谢谢。
答案1
我研究过 grep 和 awk,但不知道如何使用它们。
grep 文档有有很多例子。第一个用法部分演示了不区分大小写的搜索:
以下是调用 GNU 的示例命令
grep
:grep -i 'hello.*world' menu.h main.c
... 该
-i
选项导致grep
忽略大小写,从而导致它匹配行“Hello, world!
”,否则它不会匹配。
line number
如果我在上述页面中搜索:
-n
--line-number
Prefix each line of output with the 1-based line number within its input file. (-n is specified by POSIX.)
>> foo
并由*.csv
shell 处理(可能正如您所期望的那样)。因此:
grep -in "John.Doe" *.csv >> johndoe.txt
在 Unix 世界中,诸如 、 等选项通常以连字符/i
开头。/n
答案2
免费应用程序“CsvFileSearch”将完全满足您的要求。