awk가 내 스크립트 변수를 엉망으로 만드는 이유는 무엇입니까?

awk가 내 스크립트 변수를 엉망으로 만드는 이유는 무엇입니까?

내 변수가 왜 엉망인지는 잘 모르겠지만 원인이 이상한 것 같습니다. 나는 이 문제를 작은 스크립트로 압축했습니다.

#!/usr/bin/env bash

QUE_FILE="/mnt/drive4-4/private/queue2.txt"
t1="$(cat "$QUE_FILE")"
echo "$t1"
echo "============"
echo "$t1" | while read i; do
    a1="$(echo "$i" | awk '{print $1}')"
    a2="$(echo "$i" | awk '{print $2}')"
    echo "a1 $a1 - a2 $a2"
    combined="$a1 $a2 11111111111"
    echo "combined $combined"
done

그리고 출력:

AA BB CC
DD EE
============
a1 AA - a2 BB
combined AA BB 11111111111
a1 DD - a2 EE
 11111111111EE

마지막 줄은 다음과 같아야 합니다.

combined DD EE 11111111111

답변1

while read A1 A2 REST; do echo -e "a1 $A1 - a2 $A2 \ncombined $A1 $A2 111111" ; done < /mnt/drive4-4/private/queue2.txt

차이점은 awk인쇄 입니다.행 필드의 마지막"줄 끝"을 사용하면 read AA BB CC특정 필드가 "줄 끝" 없이 저장됩니다. REST세 번째(있는 경우) 필드와 다음 필드를 모두 저장합니다 . 줄 바꿈 사이 echo -e.\n

관련 정보