我正在尝试更改文本文件中的成绩,然后使用 >> 运算符将输出定向到新的文本文件,而不是覆盖旧文件。
但是,该文本文件中包含大量其他学生的成绩,并且该文件的布局方式为每行包含一名学生的一项考试的成绩,因此一名学生有多行描述不同考试的不同考试结果。
我如何在不同的行中专门搜索“A、B、C、D”以及我的名字“Joe Bloggs”旁边的成绩?
十个人
最佳答案
您可以使用grep
命令:
cat grades.txt | grep "Joe Bloggs" | grep "A\|B\|C\|D" >> output.txt
如果您想将 Joe Bloggs
旁边的所有 B、C 或 D
更改为所有 A
,您将像这样使用 sed:
cat grades.txt | grep "Joe Bloggs" | grep "A\|B\|C\|D" | sed 's/\(B\|C\|D\)/A/g' >> output.txt
使用awk
:
cat grades.txt | grep "Joe Bloggs" | grep "A\|B\|C\|D" | awk '{gsub(/B|C|D/,"A");print}' >> output.txt
使用perl
:
cat grades.txt | grep "Joe Bloggs" | grep "A\|B\|C\|D" | perl -e "s/B|C|D/A/" -p >> output.txt
关于linux - IO 重定向到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354865/