我迷路了,同時找出了在兩個字符串之間打印的方法。這兩個字符串都包含特殊字符,如<,>
。使用awk打印兩個正則表達式之間的差異
我能夠達到這個使用sed
完美無瑕(但不能使用),但我需要awk
,因爲我需要對結果進行進一步的文本處理。
下面是示例文件:
$ cat input.txt
RANDOM CLI> THIS IS BEFORE WINDOW
RANDOM CLI>
RANDOM CLI>log list all show...
bla bla
bla bla
bla bla bal
bla bla bla bla
RANDOM CLI>
RANDOM CLI>
RANDOM CLI>THIS IS OUT OF WINDOW
我在之間的文本intrested 「RANDOM CLI>日誌列表中的所有節目...」和明年「RANDOM CLI>」
這可以使用SED被做NE,如下圖所示:
$ sed -n '/CLI>log/,/ CLI>/p' cli
RANDOM CLI>log list all show...
bla bla
bla bla
bla bla bal
bla bla bla bla
RANDOM CLI>
但正如我提到,sed
不是吹田適合我的要求,並且只需要一個awk
解決方案。
一些嘗試逃避特殊字符,但沒有幫助。
awk '/CLI>log/,/ CLI>/' input.txt
RANDOM CLI>log list all show...
awk '/CLI\>log/,/CLI\>/' input.txt
awk '/CLI>log/{f=1;for (i=0;i<=NR;i++){getline}}/CLI>/{f=0}f' cli
字符'<,>'沒有什麼特別之處。你的第一個awk嘗試通過在GNU awk或GNU sed中轉義它來轉義它成爲一個字邊界來轉義它''''特殊的「。不要考慮使用getline,除非你知道awk更好,請參閱http://awk.freeshell.org/AllAboutGetline。 –
@EdMorton謝謝。 –