1
如何获取sed以提取两个模式之间的行,将该数据写入文件,然后提取下一个范围之间的行并将该文本写入另一个文件?例如,给定以下输入:bash,sed,awk:提取范围内的行
pattern_a
line1
line2
line3
pattern_b
pattern_a
line4
line5
line6
pattern_b
我想行1 2号线和3号线出现在一个文件,4号线LINE5和LINE6出现在另一个文件中。如果不使用循环并在循环的迭代之间保持某种状态,那么状态告诉您sed必须开始搜索以再次查找开始模式(pattern_a),我无法看到这样做的方式。
例如,在bash类似的伪代码:
while not done
if [[ first ]]; then
sed -n -e '/pattern_a/,/pattern_b/p' > $filename
else
sed -n -e '$linenumber,/pattern_b/p' > $filename
fi
linenumber = last_matched_line
filename = new_filename
是否有使用的sed这样做的很巧妙的方法?或者awk会好些?
哇,谢谢你是最好的 – sashang 2011-06-08 06:37:09
空白是免费的,不要害怕它 – 2011-06-08 10:59:22