這裏是文本的例子塊我想格式化:的sed的「N」命令工作間歇
<tr><td></td><td>tear a cat in, to make all split.</td><td></td></tr>
<tr><td></td><td class="tdci">The raging rocks</td><td></td></tr>
<tr><td></td><td class="tdci">The foolish Fates.</td></tr>
<tr><td></td><td>This was lofty! Now name the rest of the players.</td><td></td></tr>
使用這兩個「sed的」在腳本命令:
sed -ri '/^<tr><td><\/td><td>/N;s/(\n<tr><td><\/td><td class="tdci">)/\n<tr><td>\ <\/td><\/tr>\1/' "$f" #insert table row with empty data fields (blank line) above first line with 'class="tdci"'
sed -ri '/^<tr><td><\/td><td class="tdci">/N;s/(\n<tr><td><\/td><td>)/\n<tr><td>\ <\/td><\/tr>\1/' "$f" #insert table row with empty data fields (blank line) after last line with 'class="tdci"'
這裏是結果:
<tr><td></td><td>tear a cat in, to make all split.</td><td></td></tr>
<tr><td> </td></tr>
<tr><td></td><td class="tdci">The raging rocks</td><td></td></tr>
<tr><td></td><td class="tdci">The foolish Fates.</td></tr>
<tr><td></td><td>This was lofty! Now name the rest of the players.</td><td></td></tr>
所以第sed
命令作品通過將第一行無線上方的空白表格行th class="tdci"
,但幾乎相同的第二個sed
命令意圖在最後一行後面插入空白表格行,class="tdci"
不起作用。
我通常會保存這些類型的編輯,在多行之間進行編輯,因爲我從來沒有類似命令的問題,但由於某種原因,sed
的「N;s/
」一直是我碰到的,因爲在這例如,其中一個實例工作正常,但第二個實例不工作,在這些命令運行之前,該腳本刪除所有前導/尾隨空白和任何Winblowz回車(\r
)
由於我有大量要編輯的文件當然,如果有人能夠看到任何明顯的我做錯的事情,我當然更願意在腳本中得到這個工作。
其他細節:
對不起,我忘了提,我運行在Linux操作系統(Debian的穩定)
有很多HTML解析器和漂亮的打印機;利用這些。 – devnull
你在做什麼操作系統?什麼版本的sed? – Floris
@devnull我欣賞HTML的建議,但讓我們保持專注。我的問題是關於特定'sed'命令的行爲;我試圖操作的文本可能很有可能是HTML以外的格式。 – nanker