我有一个文件,其中包含一个名称列表(names.txt),我有一个文件,其中包含数千行标签分隔值(CallLog.tsv).我需要使用该文件中的grep每个名称,然后将其保存为新文件.names.txtCallLog.tsv
现在我正在单独做名字:
grep "John" CallLog.tsv > JohnCallLogs
Run Code Online (Sandbox Code Playgroud)
然后我拿出所有的名字并将cat它们转到另一个文件:
cat "John" "Mike" "Dave > FilteredCallLogs
Run Code Online (Sandbox Code Playgroud)
我想编写一个脚本来提高效率.我感谢任何帮助.
che*_*ner 10
而不是grep多次调用(每个名称一次),使用该-f选项在一次调用中查找所有匹配项:
grep -f names.txt CallLog.tsv > FilteredCallLogs.tsv
Run Code Online (Sandbox Code Playgroud)
如果需要按名称分组的行,可以在适当的字段上对结果进行排序:
# E.g., if the names are in column 2
grep -f names.txt CallLog.tsv | sort -k2,2 > FilteredCallLogs.tsv
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情:
#!/bin/bash
while read name; do
grep "$name" CallLog.tsv
done <names.txt >FilteredCallLogs.tsv
Run Code Online (Sandbox Code Playgroud)
<names.txt馈送names.txt进入循环,其中while read name读取它行由行成循环变量$name.>FilteredCallLogs.tsv将循环的输出重定向到文件中FilteredCallLogs.tsv.
| 归档时间: |
|
| 查看次数: |
14824 次 |
| 最近记录: |