Linux/Solaris에서 파일의 위치 지정 값을 바꾸는 방법

Linux/Solaris에서 파일의 위치 지정 값을 바꾸는 방법

내 파일에는 아래와 같이 파이프로 구분된 줄이 포함되어 있습니다.

45|abc|NULL|hol|
Gha|ghsk|NULL|gah|

세 번째 열 값(비어 있음)을 하이픈(-)과 같은 값으로 바꾸려면 어떻게 해야 합니까? 세 번째 열의 값은 고유하지 않습니다. 도움을 주시면 대단히 감사하겠습니다.

답변1

awk -F'|' '{ $3 = ($3 == "NULL" ? "-" : $3) } 1' OFS='|' file
  • |파일의 구분 기호를 유지 하려면 입력 및 출력 필드 구분 기호를 설정하세요.
  • 세 번째 필드가 "NULL"과 같은지 확인하고, 그렇지 않은 경우 값을 할당하고 -값을 그대로 둡니다.
  • 1마지막으로 테스트 성공 여부에 따라 세 번째 열을 수정하거나 수정하지 않고 행을 인쇄합니다.
  • ($3=="NULL"?"-":$3)$3=="NULL"조건이 참인지 확인하는 데 사용되는 삼항 연산자입니다 . true이면 ?할당하고 -, false이면 :필드를 변경하지 않고 그대로 둡니다.

시험

$ cat positioned
45|abc|NULL|hol|
Gha|ghsk|NULL|gah


$ awk -F'|' '{ $3 = ($3 == "NULL" ? "-" : $3) } 1' OFS='|' positioned
45|abc|-|hol|
Gha|ghsk|-|gah

$ cat positioned
45|abc|NULL|hol|
Gha|ghsk|NULL|gah
95|xyz|NonNULL|hol|
asdf|ghsk|NonNULL|afs|

$ awk -F'|' '{ $3 = ($3 == "NULL" ? "-" : $3) } 1' OFS='|' positioned
45|abc|-|hol|
Gha|ghsk|-|gah
95|xyz|NonNULL|hol|
asdf|ghsk|NonNULL|afs|

관련 정보