延續先前的問題 Sed on Mac not recognizing regular expressions使用SED使用正則表達式
我編輯和清理多個文本文件,準備他們在另一個軟件的輸入清理文本文件。我一直沒有能夠讓Sed處理實際的正則表達式:
我知道這些不正確,但最接近的我可以來描述我感興趣的代碼。請將兩行代碼與輸入並輸出。
任何幫助非常感謝。
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\n[0-9]+/\n/;}' {} +
格式文件:
獲得在行開始擺脫所有的數字
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/([^\n]+)\nACROSS\n/<ACROSS PUZZLE>\n<TITLE>\n\1\n<AUTHOR>\n\n<COPYRIGHT>\n\n<SIZE>\n15x15\n<GRID>\n<ACROSS>\n/;}' {} +
任何時候都有兩個或兩個以上的下劃線,只有三個
更換find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\_\_+/\_\_\_/;}' {} +
任何時候有省略號與點之間的空間,刪除空格:
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\. \. \.+/\.\.\./;}' {} +
輸入:
nxd-12345678 Serial number of file
Title of File
ACROSS
1 __ fast
2 IRS-form experts
10 Lend. . .
12 Deals with adversity
輸出:
nxd-12345678 Serial number of file
<ACROSS PUZZLE>
<TITLE>
Title of File
<AUTHOR>
<COPYRIGHT>
<SIZE>
15x15
<GRID>
<ACROSS>
___ fast
IRS-form experts
Lend...
Deals with adversity
標題總是在第二行嗎? ACROSS會不會出現在第三行?其餘的都很簡單。 –
我很驚訝沒有人在你的線索中找到你 - sed總是做任何跨越多行的東西的錯誤工具。你應該使用awk。 –
Ed。不,沒有人。我是前端開發人員,所以我只有這方面的基本知識。我的知識大多侷限於像PHP這樣的東西。我沒有太多的使用命令行技能。但是我能夠回答我所有的問題。我最終完成的這個腳本將幾個不同的任務組合成一個腳本。準備一大堆文件時節省大量時間,在該腳本之前,需要大量手動按摩數據才能爲其最終目的地做好準備。 – verbatim