[英]Sed command replace number + letter with number + \n + letter
我有一個(我認為是棘手的) sed
問題。
我有一個包含純文本和數字的文件。
文件中的每個實例,其中都有一個數字[0-9]
后跟一個字母C
, T
或D
,我想用相同的數字后跟一個\\n
字符和相同的字母替換它。
例如
551235D 4218789T 435151C
我想替換為
551235\nD 4218789\nT 435151\nC
我面臨的問題是如何用相同的字母/數字替換每個字母/數字組合。 很容易用我喜歡的內容替換[0-9]
后跟C
, T
或D
,問題是在數字和字母之間插入\\n
...
任何幫助將不勝感激。
這可能對您有用(GNU sed):
sed 's/\([0-9]\)\([DTC]\)/\1\n\2/g' file
使用反向引用。
在sed
,換行符可以通過\\
進行轉義來升序:
可以通過將<newline>替換為一行來進行拆分。 在替換中,應用程序應在<newline>之前加上<backslash>,從而對其進行轉義。
此外,可以通過多次使用-e
來通過參數輕松添加換行符:
每個-e或-f選項指定的命令應按指定的順序添加到腳本中。 進行每個添加時,如果先前的添加(如果有)來自-e選項,則應在新添加之前插入<newline>。
以上任何一種都可以與反向引用替換( \\1
, \\2
等)組合以在所需字符之間分割行。
$ sed 's/\([0-9]\)\([DTC]\)/\1\
> \2/g'
要么
$ sed -e's/\([0-9]\)\([DTC]\)/\1\' -e'\2/g'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.