![awk를 사용하여 $0을 인쇄할 때 필드 구분 기호를 유지하는 방법 [중복]](https://linux55.com/image/80567/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%240%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%A0%20%EB%95%8C%20%ED%95%84%EB%93%9C%20%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EB%A5%BC%20%EC%9C%A0%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EC%A4%91%EB%B3%B5%5D.png)
파일의 한 열을 수정한 후 결과를 인쇄해 봅니다.
awk -F"|" '{ if(NR!=1){$5 = $5+0.1} print $0}' myfile
내가 원하는 대로 작동하지만 인쇄할 때 첫 번째 행만 필드 구분 기호를 유지합니다. (수정하지 않습니다).
print $1"|"$2"|"$3"|"$4"|"$5"|"...
그렇다면 $0을 사용하지 않고 사용할 수 있는 솔루션이 있나요 ? (예: 열 수를 모르는 경우)
나는 내 문제를 쉽게 해결할 수 있다고 믿지만 sed
지금은 배우려고 노력하고 있습니다.awk
답변1
@Sukminder는 이미 간단한 답변을 제공했습니다. 예제 코드(예: 코드 검토)에 대한 몇 가지 스타일 포인트와 유용한 구문이 있습니다. 이것은 주석으로 시작했지만 점점 길어졌습니다.
OFS
앞에서 설명한 대로 출력 필드 구분 기호입니다.
$0
-의 기본 매개변수이므로 print
명시적으로 지정할 필요가 없습니다. 또 다른 스타일 포인트: awk
내장된 조건부 블록과 같은 소위 "패턴"이 있습니다. 따라서 다음을 사용할 수도 있습니다.
awk -F'|' 'BEGIN {OFS = FS} NR != 1 {$5 += 0.1} {print}' myfile