다음 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=" "
.