AWK - 線をパターンに変換する方法は?

AWK - 線をパターンに変換する方法は?

この入力ファイルがありますが、1行を修正して残りを維持したいと思います。

入力する:

Config.Ini|GENERAL|Release||
Config.Ini|GENERAL|Foo1|0|
Config.Ini|GENERAL|Foo2|65#36|
Config.Ini|RESULT|Value|AAA#3#0#DOYO;1#1#TOTO#0##1###0#1###-1|
Config.Ini|RESULT|VERIF|0;162#3;3;;1;1;0;3;;;;####1#1;;;|
Config.Ini|PHONE|France|33|
Config.Ini|PHONE|Italy|39|

この結果を得るためにAWKを使用したいと思います。

Config.Ini|GENERAL|Release||
Config.Ini|GENERAL|Foo1|0|
Config.Ini|GENERAL|Foo2|65#36|
Config.Ini|RESULT|Value|AAA#1#0#DOYO;1#3#TOTO#0##1###0#1###-1|
Config.Ini|RESULT|VERIF|0;162#3;3;;1;1;0;3;;;;####1#1;;;|
Config.Ini|PHONE|France|33|
Config.Ini|PHONE|Italy|39|

修正は非常に微妙です。修正したい唯一の行に焦点を当てます。

入力する:

構成.Ini|結果|値|AAA#サム#0#DOYO;1#1#TOTO#0##1###0#1###-1|

希望の出力:

構成.Ini|結果|値|AAA#1#0#DOYO;1#サム#TOTO#0##1###0#1###-1|

この結果をどのように取得できますか?

ベストアンサー1

$ awk -F'#' -v OFS='#' '/RESULT\|Value/ {t=$2;$2=$5;$5=t}1' input.txt 
onfig.Ini|GENERAL|Release||
Config.Ini|GENERAL|Foo1|0|
Config.Ini|GENERAL|Foo2|65#36|
Config.Ini|RESULT|Value|AAA#1#0#DOYO;1#3#TOTO#0##1###0#1###-1|
Config.Ini|RESULT|VERIF|0;162#3;3;;1;1;0;3;;;;####1#1;;;|
Config.Ini|PHONE|France|33|
Config.Ini|PHONE|Italy|39|

入力と出力としてフィールド区切り文字を使用して、埋め込み#線のフィールド2と5を置き換えますRESULT|Value。拡張正規表現置換ではなく|リテラルとして処理されるように、バックスラッシュでエスケープする必要があります。|

おすすめ記事