3 回答

TA貢獻1801條經驗 獲得超8個贊
以下內容awk可能對您有所幫助。
awk '/i8732jddcd234/{if(!first){first=FNR};end=FNR} {a[FNR]=$0} END{for(i=first;i<=end;i++){print a[i]}}' Input_file
現在也添加非單一襯里形式的解決方案。
awk '
/i8732jddcd234/ {
if (!first) {
first = FNR
}
end = FNR
}
{
a[FNR] = $0
}
END {
for(i = first; i <= end; i++) {
print a[i]
}
}' Input_file

TA貢獻1810條經驗 獲得超4個贊
last=$(nl sample.log | tac | awk '/i8732jddcd234/ {print $1; exit}')
sed -n "/i8732jddcd234/,${last}p" sample.log
或者,用awk進行2次遍歷文件:
awk -v code=i8732jddcd234 '
NR == FNR {
if ($0 ~ code) {
if (!first) first=FNR
last=FNR
}
next
}
first <= FNR && FNR <= last
' sample.log sample.log

TA貢獻1875條經驗 獲得超3個贊
這可能對您有用(GNU sed):
sed '/i8732jddcd234/!d;:a;n;:b;//ba;$d;N;bb' file
刪除所有行,直到包含的行i8732jddcd234
。打印包含的行i8732jddcd234
,然后檢查下一行是否也行,是否重復。否則,請收集行,直到下次出現i8732jddcd234
或文件結束為止,在這種情況下,可以刪除累積的行。
- 3 回答
- 0 關注
- 312 瀏覽
添加回答
舉報