我試圖搜索文本文件的特定部分,並將信息保存在兩個關鍵字之間。語法看起來像什麼讓我只能保存中間的信息?目前,我的代碼是:從文本文件中獲取範圍模式中的特定行
3210
1
A
回答
4
awk '/<!-- start of lyrics -->/,/<!-- end of lyrics -->/' input.txt >> Lyric.csv
這是從我的"The AWK Programming Language" (1984, p23)
副本:
- 圖案1,圖案2 {語句}
一系列圖案中的每個輸入線從通過圖案匹配的線匹配1到符合模式2的下一行(含);該報表在每個匹配的 行執行。
範圍模式不能成爲 任何其他模式的一部分。
要從輸出範圍中排除pattern 1
& pattern 2
:
awk '/pattern 1/,/pattern 2/ {if ($0 !~ /pattern 1|pattern 2/) print}' input.txt
1
這個腳本應該這樣做:
#!/bin/sh
awk '
/<!-- start of lyrics -->/ { lyrics = 1; next }
/<!-- end of lyrics -->/ { exit }
lyrics { print }
'
如果你把它script.sh
那麼你可以使用它像這樣:
./script.sh <input.txt> lyrics.txt
這是如何工作的:
- :如果行結束「模式」匹配,則退出
lyrics { print }
::如果lyrics
變量是如果該行的開始「模式」,然後設定lyrics
變量,並跳轉到下一行/<!-- end of lyrics -->/ { exit }
匹配設置,打印線
0
這不是完全清楚你的意思是「只保存在中間的信息」,但假設你的意思,你只是要打印的兩個分隔符之間有什麼:
awk '/<!-- start of lyrics -->/{p=1}/<!-- end of lyrics -->{p=0}p{print}0' input.txt
應該工作。
它基本上根據是否已經看到開始/結束標籤來設置和重置標誌,並且僅當標誌爲非零時纔打印行。
0
sed
都和awk
支持regex ranges
。
$ cat ff
1
2
3
4
START
4
5
3
6
7
END
14
5
8
$ awk '/START/,/END/' ff
START
4
5
3
6
7
END
$ sed -n '/START/,/END/p' ff
START
4
5
3
6
7
END
相關問題
- 1. 從文本文件中的重複範圍模式中獲取特定行
- 2. 從日誌文件中獲取範圍模式中的特定行
- 3. Bash - 從不包含特定模式的文件中獲取行
- 4. Python:從文本文件打印特定範圍的行
- 5. 從文件中讀取行的範圍
- 6. 使用Filesystemobject從文本文件中讀取行的範圍
- 7. Python - 從文件中獲取特定行
- 8. 從shell腳本中的文件中提取特定模式
- 9. 前往:讀取文件中特定範圍的行
- 10. 如何從.wav文件中提取特定的頻率範圍?
- 11. 如何從C++文本文件中獲取特定行?
- 12. 從文本文件中提取特定的字節文本行
- 13. 如何從UITextView或UITextField中獲取文本的選定範圍
- 14. 如何從文件中獲取特定行中的特定值?
- 15. 需要閱讀Python中特定範圍的文本文件
- 16. 獲取特定文本中的文本?
- 17. 提取文本文件中特定行
- 18. 從Java中的文本文件中讀取特定的行
- 19. 如何從特定文本行中獲取文本?
- 20. 從範圍獲取文本顏色
- 21. 從範圍獲取文本-VBA(Excel)
- 22. PHP從大文本文件中讀取特定行600MB文件
- 23. 用於從文本文件中提取特定模式信息的腳本
- 24. 使用jQuery獲取範圍內的特定文本
- 25. 在設定的行範圍內讀取文本文件
- 26. 如何獲取文本文件中的特定行
- 27. 從文本文件中獲取特定的字符串
- 28. 從大型文本文件中導出行的範圍
- 29. 從文件中讀取特定的行
- 30. 在UNIX中從文本文件中提取特定文本
嘿,這是真的很酷。我不知道我在「AWK編程語言」的副本中錯過了多少次。 +1打開我的眼睛。我不得不把它放在一個文件中來運行它(shell解釋錯誤?),它包括輸出中的「開始」和「結束」行。 – n0741337
@ n0741337增加了一些解釋。 – captcha
@captcha排除一個模式,你可以縮短它爲 - 'awk'NR == 1,/ pattern 1/{next}/pattern 2 /,0 {next} 1'' –