我們有一些文件,其中包含一些以十進制(!)ascii值包含在cid(#)
中的字符作爲例如字符。 (cid:104)
爲h
。字符串hello
因此表示爲(cid:104)(cid:101)(cid:108)(cid:108)(cid:111)
。使用sed替代使用ascii字符的值
我該如何用sed替換相應的ascii字符?
下面是一個例子文件:
$ cat input.txt
first line
pre (cid:104)(cid:101)(cid:108)(cid:108)(cid:111) post
last line
我試過到目前爲止是:
$ x="(cid:104)(cid:101)(cid:108)(cid:108)(cid:111)"
$ echo $x | sed 's/(cid:\([^\)]*\))/\1/g'
104101108108111
但凌晨所需要的輸出爲hello
$ cat output.txt
first line
pre hello post
last line
我m試圖在sed
中使用printf
。但不能找出如何反向引用\1
傳遞給printf
sed 's/(cid:\([^\)]*\))/'`printf "\x$(printf %x \1)"`'/g'
給你更新的問題,什麼是確切的,所需的輸出?請注意,從一開始就提供[mcve]很重要,因爲您的更新會使我們當前的答案無效。 – fedorqui
您可能需要解釋爲什麼'使用sed'是必需的。這比使用更適合的工具(比如awk或perl)要困難得多... –