让我们说一个目录有两个文件。以下是内容
FILE1.TXT
tagstart random string tagend
tagstart random string tagend
FILE2.TXT
tagstart random string tagend
tagstart random string tagend
我想grep目录并提取具有以下模式的行
tagstart <any string> tagend
我还想将输出传递给另一个文件。基本上grep命令将产生这样的输出文件
out.txt
tagstart random string tagend
tagstart random string tagend
tagstart random string tagend
tagstart random string tagend
答案 0 :(得分:1)
FILE1.TXT:
# This is the file nr.1
tagstart 123 tagend
tagstart abc tagend
kill tagstart def tagend kenny
FILE2.TXT:
# This is the file nr.2
tagstart 123 tagend
tagstart abc tagend
kill tagstart xxx tagend kenny
此命令将提取标记及其随附的字符串:
cat file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" > output.txt
output.txt的:
tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend
额外的cookie供您享用:
此命令将执行类似的操作,但仅显示已排序的唯一记录及其出现(用于统计目的):
sort file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" | uniq -c | \
awk '{print $2" "$3" "$4" : "$1}' > output.txt
output.txt的:
tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
答案 1 :(得分:0)
grep 'tagstart random string tagend' file1.txt file2.txt > out.txt
答案 2 :(得分:0)
正则表达式很少是解析xml的好方法。您是否考虑过tagstart one tagstart two tagend one tagend
等情况?
tagstart one tagstart two tagend one tagend
或
tagstart one tagstart two tagend
或
tagstart two tagend
或
tagstart two tagend one tagend
都满足你的标准。你想要哪一个?