한 열에서 문자를 검색하고 다른 열에서 일치하는 레코드의 값을 바꿉니다.

한 열에서 문자를 검색하고 다른 열에서 일치하는 레코드의 값을 바꿉니다.

열 4에서 값 2를 찾고 열 6을 일치하는 곳마다 선행 "-" 기호로 바꿔야 합니다.

csv 파일이 있다고 가정하십시오 - file1이 이와 같습니다.

abc,0,def,1234,ijk
xyz,2,def,2345,abc
ijk,2,def,5678,ijl

다음과 같은 출력을 제공하려면 정규식이 필요합니다.

abc,0,def,1234,ijk
xyz,2,def,-2345,abc
ijk,2,def,-5678,ijl

어떻게 사용하나요 awk? sed또는perl

답변1

해결책 awk:

$ awk -F',' '$2 == 2 {$4 = "-"$4}1' OFS=',' file
abc,0,def,1234,ijk
xyz,2,def,-2345,abc
ijk,2,def,-5678,ijl

동등한 perl:

$ perl -F',' -anle '$F[3] = "-".$F[3] if $F[1] == 2; print join ",", @F' file

관련 정보