Sed

如何使用 sed 替換字元串中的值但保持字元串完整

  • October 25, 2020

如何使用 sed 替換字元串中的值但保持字元串完整?

例如echo "01XX1234"

我正在尋找XX用十六進制值替換011234保持原樣。我已經嘗試了所有我能想到的組合,但我sed正在變得更好。

我可以這樣做,但有沒有更簡單的方法?

echo "01XX1234" | sed -n 's/\(01..1234\)/01AB1234/g'

sed只會替換字元串的匹配子字元串。

$ echo '01XX1234' | sed 's/XX/AF/'
01AF1234

如果您打算始終替換第三個和第四個字元但保持第一個和第二個不變,您可以使用:

$ echo '01XX1234' | sed 's/\(.\{2\}\).\{2\}/\1AF/'
01AF1234
  • \{2\}表示出現兩次前面的字元(在這種情況下.:任何字元)
  • \(...\)括號用於創建匹配組;您可以稍後在模式或替換字元串中引用匹配的子字元串
  • \1指第一個匹配的子字元串(在這種情況下,即“01”)

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