Re: [問題] Grep如何抓取前一行後兩行

看板Linux作者 (慘)時間14年前 (2011/11/26 20:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《zchien (小建)》之銘言: : ※ 引述《zchien (小建)》之銘言: : : 不好意思...我使用的是UNIX系統 : : 我想請問一下... : : 我記得抓關鍵字"AAA"..單行的指令應該是 : : grep "AAA" data.txt > result.txt : : 會搜尋data.txt內的"AAA"的那行關鍵字...並且存在result.txt : : 但是我希望能夠取這關鍵字的前一行...和後兩行...(包含AAA的關鍵字那行) : : 總共需要四行...請問要如何用... : : 有網友提供過...加入-B1 -A2參數...可以達成... : : 但是我測試過 grep -B1 -A2 "*AAA*" data.txt > result.txt : : 但是系統卻顯示無法辨識...-B1 -A2... : : 而且我測試 man grep 也找不到..(但可能我英文不好..)_ : : 想請各位網友...在提供一下...是否有其他方法... : : 還是有其他指令可以達成呢 ...謝謝 : 不好意思...重新提我一年前問過的問題 : 因為我目前還沒找到答案 : 我是用SunOS5.10 : 指令好像沒有支援grep -B1 -A2 : 有其他方式嗎 : awk或是sed有辦法達到這功能嗎 grep -B1 -A2 "*AAA*" data.txt > result.txt 參考看看 grepab.sh ----------------------沿虛線剪下----------------------------- greplinenumbers=`grep -E "*AAA*" -n data.txt | cut -d : -f 1` rm displaylines.txt > null 2>&1 for getline in $greplinenumbers do expr $getline - 1 >> displaylines.txt expr $getline >> displaylines.txt expr $getline + 1 >> displaylines.txt expr $getline + 2 >> displaylines.txt done displaylinenumbers=`cat displaylines.txt` rm result.txt > null 2>&1 for getline in $displaylinenumbers do sed -n "$getline p" data.txt >> result.txt done ----------------------沿虛線剪下----------------------------- [mary@localhost ~]$ cat data.txt 111 AAAAA 333 444 555 111 AAAAA 333 444 555 [mary@localhost ~]$ sh grepab.sh [mary@localhost ~]$ cat result.txt 111 AAAAA 333 444 111 AAAAA 333 444 [mary@localhost ~]$ ※ 編輯: xyz2012 來自: 122.121.215.49 (11/26 23:13)
文章代碼(AID): #1EqDwhsZ (Linux)
文章代碼(AID): #1EqDwhsZ (Linux)