【发布时间】:2021-12-19 08:01:06
【问题描述】:
目前,我的 shell 脚本将一个大文件中的行迭代两次: (我想做的就跟下面的shell脚本一样)
grep 'some_text' huge_file.txt > lines_contains_a.txt
grep -v 'some_text' huge_file.txt > lines_not_contains_a.txt
但它很慢。
如何做同样的事情只迭代一次?
谢谢!
【问题讨论】:
目前,我的 shell 脚本将一个大文件中的行迭代两次: (我想做的就跟下面的shell脚本一样)
grep 'some_text' huge_file.txt > lines_contains_a.txt
grep -v 'some_text' huge_file.txt > lines_not_contains_a.txt
但它很慢。
如何做同样的事情只迭代一次?
谢谢!
【问题讨论】:
使用 GNU awk:
awk '/some_text/ { print >> "lines_contains_a.txt" }
!/some_text/ { print >> "lines_not_contains_a.txt" }' huge_file.txt
【讨论】:
使用 sed:
sed -n '/some_text/ w lines_contains_a.txt
/some_text/! w lines_not_contains_a.txt' huge_file.txt
【讨论】: