|
藍森林 http://www.lslnet.com 2006年6月26日 11:18
請教一個sed的用法
有一文件,內容大概如下:
$cat test.dat
611111001
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
611111003
正在與後台通訊,請稍候...
--下載成功
...........
611111002
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
611111005
正在與後台通訊,請稍候...
--下載成功
............
611111009
正在與後台通訊,請稍候...
--下載成功
...........
"下載成功"後的.............表示後面有很多行,
現在我想要得"下載失敗"的行和該行上面的數字行,需要得到的結果如下
611111001
--下載失敗(與主機聯接失敗), 請重試
611111002
--下載失敗(與主機聯接失敗), 請重試
請教該如何用啊,找了些資料,但還做不出上面的結果
--> |
請教一個sed的用法
grep '下載失敗' -B1 |
請教一個sed的用法
sed -n 'N;/下載失敗/P;D'
好像sed1line裡有?記不清了 |
請教一個sed的用法
我的sco unix5.0.5 grep 沒有-B
grep: -C illegal option
grep [-E|-F] [-c|-l|-q] [-bhinsvx] [-e pattern_list] [-f pattern_file] [pattern_
list] [file...]
所以grep '下載失敗' -B1 不行
sed -n 'N;/下載失敗/P;D'
得到的結果是
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
不是我想要的那個結果 |
請教一個sed的用法
你想要啥結果 :?: :mrgreen: |
請教一個sed的用法
原文如下
$cat test.dat
611111001
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
611111003
正在與後台通訊,請稍候...
--下載成功
...........
611111002
正在與後台通訊,請稍候...
--下載失敗(與主機聯接失敗), 請重試
611111005
正在與後台通訊,請稍候...
--下載成功
............
611111009
正在與後台通訊,請稍候...
--下載成功
...........
"下載成功"後的.............表示後面有很多行,
想要得的的結果是,得到"下載失敗"的行和該行上面的數字行,如下
61111001
--下載失敗(與主機聯接失敗), 請重試
611111002
--下載失敗(與主機聯接失敗), 請重試 |
請教一個sed的用法
sed的不會,用一個awk的 :oops:
[code]awk '{if($0~/^[0-9]/) {number=$0;}if($0~/重試/) {print number;print $0}}' yourFile[/code] |
請教一個sed的用法
果然可以了,太謝謝了,呵呵,總算是看懂了這個shell
又學到一招了,先將我要的數值行存在變量number,
再判斷是否有"重試"行,如果有就print 數值行和這行失敗行
GOOD!!! |
| |