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