awk에서 공백이 있는 필드 구분 기호의 일관되지 않은 동작

awk에서 공백이 있는 필드 구분 기호의 일관되지 않은 동작

다음 awk 스크립트는 ' '선행 공백을 필드 구분 기호로 무시하지만 다른 문자를 빈 $1 앞에 오는 필드의 구분 기호로 처리하는 방법을 보여줍니다.

필드 구분 기호의 모든 값에 대해 동작을 일관되게 만드는 방법이 있습니까?

echo -e " Data\tdlm\t\$1\t\$2\t\$3"  
for d in '^' ':' '"' 'x' '/' ' ' ;do
  echo "${d}1${d}2${d}" |awk -F"$d" '
       { printf "|%s|\t|%s|\t|%s|\t|%s|\t|%s|\n", $0, FS, $1, $2, $3; }'
done

산출:

 Data   dlm     $1      $2      $3
|^1^2^| |^|     ||      |1|     |2|
|:1:2:| |:|     ||      |1|     |2|
|"1"2"| |"|     ||      |1|     |2|
|x1x2x| |x|     ||      |1|     |2|
|/1/2/| |/|     ||      |1|     |2|
| 1 2 | | |     |1|     |2|     ||

답변1

FS를 정규식 FS = "[ \t]+"(예: "공백")으로 설정하면 더 이상 앞뒤 공백이 제거되지 않습니다. awk는 앞뒤 공백만 제거합니다 FS=" ".

나는 awk에게 이것을 하지 말라고 말하는 것이 가능하지 않다고 생각합니다 FS=" ".

관련 정보