2文字ごとに文字列を追加してください。

2文字ごとに文字列を追加してください。

次の文字列があります。

AAAACE21

次のように変換したいと思います。基本的に2文字ごとに始めに追加したいと\xAA\xAA\xCE\x21 思います。\x何らかの理由で文字列を繰り返し追加しようとするたびに文字列が\終わらないようです。これができるライナーはありますか?

答え1

$ echo AAAACE21 | sed 's/../\\x&/g'
\xAA\xAA\xCE\x21

存在するsed.すべての文字を表します。..2文字と一致します。表現を入力し\\て一致するコンテンツに置き換える必要があることがよくあります。\&

g示すG言い換えれば、可能な限り、できるだけ実行してください。これがなければ、最初の2文字だけが得られます。

$ echo AAAACE21 | sed 's/../\\x&/'
\xAAAACE21

答え2

awkを使用するソリューションは次のとおりです。

awk -v FS='' '{for(i=1;i<NF;i+=2) printf "\\x%s%s",$i,$(i+1)}END{printf "\n"}' <<<"AAAACE21"
\xAA\xAA\xCE\x21

フィールド区切り記号(FS)を空の文字列に設定し、文字で区切ります。次に、目的の文字列の前に2文字ごとに印刷します。リテラルバックスラッシュを印刷するには、バックスラッシュでエスケープしてください。

関連情報