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 关注
- 271 浏览
添加回答
举报