awk의 결과를 변수에 저장

awk의 결과를 변수에 저장

필드 사이의 공백을 쉼표로 바꾸기 위해 awk를 사용하여 수정하는 변수(여러 줄의 텍스트 포함)가 있고 이를 다른 변수에 저장하려고 합니다. 이것이 내가 지금 하고 있는 일입니다:

VAR2=$(echo "$VAR1" | awk 'END {OFS=","}' 1)

그러나 이렇게 하면 echo "$VAR2"빈 줄만 인쇄됩니다.

답변1

AWK 스크립트는 아무것도 출력하지 않습니다. 그러나 Bash와 같은 셸을 사용한다고 가정하면 공백을 쉼표로 바꾸는 데 AWK가 필요하지 않습니다.

VAR2="${VAR1// /,}"

또는 어떤 껍질이든,

VAR2=$(printf "%s" "$VAR1" | tr -s '[:blank:]' ,)

전자는 여러 공백을 축소하지 않습니다. 이것이 중요한 경우 활성화 extglob( shopt -s extglob)하고 사용합니다.

VAR2="${VAR1//+( )/,}"

AWK를 사용하려면 인쇄해야 합니다.뒤쪽에 새로운 출력 구분 기호를 사용하여 레코드를 강제로 업데이트합니다.:

VAR2=$(printf %s "$VAR1" | awk -v OFS=, '{$1=$1} 1')

답변2

var2=$(awk '{gsub(/[[:space:]]+/,",",$0);print }' filename)

산출

echo $var2
praveen,ajay,san

관련 정보