簡體   English   中英

sed命令將數字+字母替換為數字+ \\ n +字母

[英]Sed command replace number + letter with number + \n + letter

我有一個(我認為是棘手的) sed問題。

我有一個包含純文本和數字的文件。

文件中的每個實例,其中都有一個數字[0-9]后跟一個字母CTD ,我想用相同的數字后跟一個\\n字符和相同的字母替換它。

例如

551235D 4218789T 435151C

我想替換為

 551235\nD 4218789\nT 435151\nC

我面臨的問題是如何用相同的字母/數字替換每個字母/數字組合。 很容易用我喜歡的內容替換[0-9]后跟CTD ,問題是在數字和字母之間插入\\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM