我经常使用grep,并熟悉它默认返回匹配行和使用-v参数返回非匹配行的能力。然而,我希望能够一次性使用grep将文件中的匹配行和非匹配行分开。
如果这不可能,请告诉我。我知道我可以轻松地在perl或awk中完成这个任务,但我很想知道是否可以用grep实现。
谢谢!
我经常使用grep,并熟悉它默认返回匹配行和使用-v参数返回非匹配行的能力。然而,我希望能够一次性使用grep将文件中的匹配行和非匹配行分开。
如果这不可能,请告诉我。我知道我可以轻松地在perl或awk中完成这个任务,但我很想知道是否可以用grep实现。
谢谢!
awk '/pattern/ {print $0 > "file1"; next}{print $0 > "file2"}' inputfile
awk '{print > (/pattern/ ? "file1" : "file2"}' inputfile
- Ed Mortonregex
。
它按行读取STDIN并检查给定的[1] https://gist.github.com/tonejito/c9c0bffd75d8c81483f9107c609439e1
regex
,匹配的行转到STDOUT,不匹配的转到STDERR。步骤1:读取文件
步骤2:将空格替换为新行,并将结果保存在临时文件中
步骤3:从临时文件中获取仅包含“_”的行,并将其保存到multiwords.txt中
步骤4:从临时文件中排除包含“-”的行,然后将结果保存到singlewords.txt中
步骤5:删除临时文件
cat file | tr ' ' '\n' > tmp.txt | grep '_' tmp.txt > multiwords.txt | grep -v '_' tmp.txt > singlewords.txt | find . -type f -name 'tmp.txt' -delete