cid(#)
で囲まれた10進数(!)ASCII値で表されるいくつかの文字を含むファイルがあります。 (cid:104)
(h
)。したがって、文字列hello
は、(cid:104)(cid:101)(cid:108)(cid:108)(cid:111)
と表されます。sedを使用してascii charと値を置き換えてください
これを対応するASCII文字でsedを使用してどのように置き換えることができますか?
$ 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 printf
をsed
に使用しようとしています。しかしchr($1)
の代わりsprintf "%c", $1
を使用することを示唆するために123 @printf
sed 's/(cid:\([^\)]*\))/'`printf "\x$(printf %x \1)"`'/g'
あなたの更新の問題を考えると、正確な、所望の出力は何ですか?更新が私たちの現在の回答を無効にするので、最初から[mcve]を提供することが重要であることに注意してください。 – fedorqui
「sedを使う」がなぜ必要なのかを説明する必要があるかもしれません。これは、awkやperlなどのより適切なツールを使用するよりはるかに困難です... –