AWK - 선을 패턴으로 바꾸는 방법은 무엇입니까?

AWK - 선을 패턴으로 바꾸는 방법은 무엇입니까?

이 입력 파일이 있는데 한 줄을 수정하고 나머지는 유지하고 싶습니다.

입력하다:

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. 확장된 정규식 대체가 아닌 |리터럴로 처리되도록 백슬래시로 이스케이프 해야 합니다 .|

관련 정보