Bash
如何閱讀多行而不是逐行
我看到在我的程式碼中,如果整個程式碼都基於該行,我可以修改該行。範例:
<p class="example">this is an example Happy Holidays</p>
。但是,如果</p>
標籤位於第二行,則程式碼將通過該行。在某些標籤的行結束之前檢測的最佳方法是什麼?
文本實用程序在行上工作(文本行是(不太長)由換行符終止的非 NUL 字元序列)。
awk
是一種標準實用程序,可以被告知在由換行符以外的其他事物分隔的記錄上工作,這就是為什麼awk
談論記錄而不是行。例如,您可以
>
用作記錄分隔符。如:awk -v RS='>' ...
另一種方法是將要用作記錄分隔符的字元(對於除 之外的其他工具
awk
)與換行符交換:... | tr '\n>' '>\n' | sed ... | other-text-utility... | tr '\n>' '>\n'
這些假設您要修改的內容不包含嵌套的 HTML 標記,因為它們會開始新記錄。
那就是更換
簡單的答案是:不要使用 shell 來解析 XML。改用 XML 解析器,例如 Perl 的眾多解析器之一:XML::Parser、XML::Simple或任何其他語言。對於 HTML,HTML::Parser是一個選項(如果我們繼續使用 Perl)。
如果你想使用
bash
,你可以玩一下read
內置和循環。