2


これを含む文字列があり (フィールド区切り記号はパーセント記号)、data という変数に格納されています。

201%jkhjfhn%kfhngjm%mkdfhgjdfg%mkdfhgjdfhg%mkdhfgjdhfg%kdfhgjgh%kdfgjhgfh%mkfgnhmkgfnh%k,gnhjkgfn%jkdfhngjdfng

パーセント記号をパイプに置き換えてその文字列を印刷しようとしていますが、思ったよりも固いようです:

echo ${data} | awk -F"%" 'BEGIN {OFS="|"} {print $0}'

私はそれに非常に近づいていることを知っていますが、十分に近づいていません。

私はそのコードを次のように見ています:

1 echo the variable value into a awk session
2 set field separator as "%"
3 set as output field separator "|"
4 print the line
4

2 に答える 2

3

これを試して :

echo "$data" | awk -F"%" 'BEGIN {OFS="|"} {$1=$1; print $0}'

awkマニュアルより

最後に、フィールドの現在の値と OFS を使用して、awk に強制的にレコード全体を再構築させると便利な場合があります。これを行うには、一見無害な割り当てを使用します。

$1 = $1   # force record to be reconstituted
print $0  # or whatever else with $0

trの代替を検索する場合にのみ使用する別の軽量な方法awk

tr '%' '|' <<< "$data"
于 2013-03-18T11:20:30.457 に答える
3

Sputnick がawk解決策を提供しましたが、実際にはまったく必要ありませんawk。シェルを使用するだけです。

echo ${data//%/|}
于 2013-03-18T11:23:13.813 に答える