私のオリジナルテキストは
11 2 CDTZ - b00264ab
36 37 CDTB - c2330001
出力テキストを次のように表示したいと思います。
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01
ハイフンの後に、文字列の2文字ごとにコロンを追加する必要があります。
次のような一般的なテキスト処理コマンドはありますか?
- ハイフンの前に含まれるすべての文字列は変更されていないままにしてください。
- ハイフンの後に2文字ごとにコロンを挿入します。
通常、パターン(ここではハイフン)の前後のテキストを異なる方法で処理する必要があります。
これまでの私の努力:
sed
私はとの基本的な知識がありますawk
。sed
でこれを行う方法がある場合は、awk
フィールド-
区切り文字で(ハイフン)を設定し、それをawk
実行してから、行全体を印刷します。sed 's/../&:/g;s/:$//'
$2
print $0
答え1
この試み、
awk -v OFS='\t' '{gsub(/../,"&:",$NF); sub(/:$/,"",$NF);}1' file
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01
gsub(/../,"&:",$NF)
:
各ペアまたは文字に対して末尾が追加されます。sub(/:$/,"",$NF)
:
前のフィールドの末尾に追加された不要なコンテンツは削除されます。gsub
答え2
最後の16進数は常に8文字であるとします。
$ sed 's/\(..\)\(..\)\(..\)\(..\)$/\1:\2:\3:\4/' file
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01