簡體   English   中英

使用sed將字符串的一部分附加到字符串的前面

[英]Using sed to append part of a string to the front of the string

在Linux中,我有一個字符串,並希望使用sed將在字符串中找到的數字附加到它的前面,然后加上一個冒號。 例如,我有字符串

word word word 01 word word 02 word word word word 03 word

並希望有

03:word word word 01 word word 02 word word word word 03 word

我可以用

sed 's/^/:/' 

將冒號附加到前面,但是對於每個單獨的字符串,我也想將03位置的數字也復制到前面。

您可以使用此:

sed -r 's/(.*[^0-9])([0-9]+)/\2:\1\2/' <<< "$string"

我正在使用替代命令s (.*[^0-9])捕獲所有內容(貪婪),直到字符串中的最后一個數字進入子模式1。數字本身([0-9] +)進入子模式2。

在替換模式中,我們在2之前打印子模式2,並在它們之間添加冒號。

由於您將輸入視為列,因此awk可能會更好。

這是sed的專欄式方法:

sed -r 's/^(([^ ]+ ){11})([^ ]+)/\3:\1\3/'

(如果您的“ 03”列曾經更改過,只需將{11}更改為`{yournewcolumnnumber-1})


使用awk,事情更易讀

awk '{print $12 ":" $0}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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