파일의 한 열을 수정한 후 결과를 인쇄해 봅니다.
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