Linux
SED - 使用其他行的某些內容生成行
我的文件夾中有一些文件
每個文件都有這樣的結構:
... product: Nike New Awesome Shoe price: 123 color: black ...
我需要在使用 *.txt 的所有文件中使用單個 SED 命令完成以下場景
基本上,我需要在以該模式開頭的一行中獲取 First word After 模式,並在新行中與“brand:”連接。
選擇以 (product: ) 開頭的行 Get first word after (product: ) Create a new line concatenating brand: with the first word from other line
PS:我沒有行號,因為行號可能會更改文件。
... product: Nike New Awesome Shoe brand: Nike price: 123 color: black ...
使用
sed
,您可以複製匹配保留所需的字元串$ sed '/^product/{p;s/[^ ]* \([^ ]*\).*/brand: \1/;}' input_file ... product: Nike New Awesome Shoe brand: Nike price: 123 color: black ...
你可以使用這個:
sed 's/^product: \([^ ]*\) .*/&\ brand: \1/' file.txt
^product:
匹配以產品開頭的行**:**
\([^ ]*\)
引用後面的詞product:
&
插入整個匹配項(在本例中為整行),反斜杠後跟換行符添加換行符,換行符以brand:
第一個引用的\1
單詞開頭。