Bash

如何閱讀多行而不是逐行

  • December 28, 2012

我看到在我的程式碼中,如果整個程式碼都基於該行,我可以修改該行。範例:<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::ParserXML::Simple或任何其他語言。對於 HTML,HTML::Parser是一個選項(如果我們繼續使用 Perl)。

如果你想使用bash,你可以玩一下read內置和循環。

引用自:https://unix.stackexchange.com/questions/59573