我想在两条与特定图案匹配的线条之间打印所有内容。例如,如果我的输入文件看起来像
--- START ---
line 1
line 2
--- END ---
我想输出
line 1
line 2
可以这样做(例如使用grep或awk吗?)
答案 0 :(得分:1)
你可以做到
sed -n '/--- START ---/,/--- END ---/{/--- START ---\|--- END ---/!p}' < input
或
awk '/--- END ---/{exit}; flag {print}; /--- START ---/{flag=1} ' < input
答案 1 :(得分:1)
这是使用awk
awk '/END/{f=0} f; /START/{f=1}' file.txt
line 1
line 2
您应该可以使用Google轻松找到解决方案。
另一个版本:
awk '/START/{f=1;next} /END/{f=0} f' file.txt
line 1
line 2
答案 2 :(得分:0)
以下是一个使用awk
和grep
的简单解决方案:
awk '/-- START ---/,/--- END ---/ {print $0}' file.txt \
| grep -v -- '--- START ---' \
| grep -v -- '--- END ---'
答案 3 :(得分:0)
使用perl:
perl -0777 -ne 'print $1 if /^--- START ---\s*\n(.*?)--- END ---/s' file