ファイル内の区切り文字の後に=が最初に表示されたときに二重引用符を追加します。

ファイル内の区切り文字の後に=が最初に表示されたときに二重引用符を追加します。

=ファイルに最初に表示される区切り文字の後に二重引用符を追加します。|

入力する:

Ver=7|errmsg=0=sucess,1=failue

出力が欲しいです。

Ver"="7|errmsg"="0=success,1=failue

=二重引用符は、区切り文字の最初の後にのみ追加する必要があります|

awkを使用するとこれを達成できますが、awk -i inplaceを使用するとファイル内でこれらの変更を実行することはできません。

sedや他の方法で変更できますか?

ベストアンサー1

$ cat file
Input: Ver=7|errmsg=0=sucess,1=failue
$ awk -F '|' 'BEGIN { OFS=FS } { sub("=", "\"=\"", $2); print }' file
Input: Ver=7|errmsg"="0=sucess,1=failue

これはawkデータを2つの別々の|フィールドとして使用して処理します。この呼び出しは最初のフィールドを2番目のフィールドに置き換えますsub()。次に、修正された行を印刷します。="="

=変更区切り記号(フィールドが3つ以上の場合)ループを使用します。

awk -F '|' 'BEGIN { OFS=FS } { for (i = 2; i <= NF; ++i) sub("=", "\"=\"", $i); print }' file

最新のGNUを使用して変更するにはawk

awk -i inplace -F '|' 'BEGIN { OFS=FS } { for (i = 2; i <= NF; ++i) sub("=", "\"=\"", $i); print }' file

GNUでない場合awk

cp file file.tmp
awk -F '|' 'BEGIN { OFS=FS } { for (i = 2; i <= NF; ++i) sub("=", "\"=\"", $i); print }' file.tmp >file
rm file.tmp

おすすめ記事