我期待得到所有的行,其中有'search_string‘+线后,+线匹配'mod’之前。
我试过:
grep -n 'mod\|search_string' ip | grep --before 1 search_string> inter
grep -n --after 1 search_string ip >> inter
sort -t':' -k1,1n -u inter -o op有更好的办法吗?
文件:
mod start1
some lines
mod start2
other lines
mod start3
many other lines
search_string yada yada
hello
many other lines
search_string yada yada
bye
mod start4
search_string baba baba
this too
mod start5 预期产出:
mod start3
search_string yada yada
hello
search_string yada yada
bye
mod start4
search_string baba baba
this too发布于 2018-08-26 02:36:18
如果您希望在Python脚本中这样做:
# Read file into memory.
with open('myfile.txt') as f:
lines = [line.rstrip() for line in f]
# Loops through lines backwards, looking for string and optionally mod.
output_lines = list()
find_mod = False
for i, line in enumerate(lines[::-1]):
if 'search_string' in line:
output_lines.append(lines[::-1][i-1])
output_lines.append(lines[::-1][i])
find_mod = True
elif find_mod and 'mod' in line:
output_lines.append(lines[::-1][i])
find_mod=False
print("\n".join(output_lines[::-1]))https://unix.stackexchange.com/questions/464824
复制相似问题