![한 열에서 문자를 검색하고 다른 열에서 일치하는 레코드의 값을 바꿉니다.](https://linux55.com/image/56185/%ED%95%9C%20%EC%97%B4%EC%97%90%EC%84%9C%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EA%B2%80%EC%83%89%ED%95%98%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EC%97%B4%EC%97%90%EC%84%9C%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%A0%88%EC%BD%94%EB%93%9C%EC%9D%98%20%EA%B0%92%EC%9D%84%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
열 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