Text-Processing

如何查找文本,將其複制並插入文件的下一行?

  • December 3, 2018

我正在嘗試編寫一個處理 .xml 文件的腳本。它必須找到包含一個<title>元素的所有行,複製它,然後在找到的行之後粘貼到下一行,而且還要更改元素類型。這是一個例子。

原來的:

一些文本

<title>文本 1</title>

一些文本

<title>文本 2</title>

一些文本

這就是我需要得到的:

一些文本

<title>文本 1</title>

<description>文本 1</description>

一些文本

<title>文本 2</title>

<description>文本 2</description>

一些文本

可以用 sed 或 grep (或其他工具)來完成嗎?

sed -E 's%<title>(.*)</title>%<title>\1</title>\n<desc>\1</desc>%g' file.xml應該做你的功課。

進一步解釋一下: -E參數告訴sed使用擴展正則表達式,因此您可以使用引用。用 sed 替換通常以s/search/replace/g. 由於搜尋文本中有斜杠,我們使用%而不是/for sed 來標記部分,因此我們不必用反斜杠掩蓋搜尋文本中的斜杠。其餘的是正常的正則表達式,\1在替換部分引用(…)了搜尋部分中的片段。

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