この入力ファイルがありますが、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
。拡張正規表現置換ではなく|
リテラルとして処理されるように、バックスラッシュでエスケープする必要があります。|