하위 문자열 매개변수를 awk에 전달

하위 문자열 매개변수를 awk에 전달

awk 명령을 사용하여 파일을 분할하고 그에 따라 이름을 바꿔야 합니다. substring 명령을 사용하고 매개변수를 awk 명령에 전달하려고 시도했지만 실패했습니다.

for file in *.csv
do
  split -n 3 -d -a 2 "$file" "$file--"
  for each in $(seq -w 2 10)
  do
        echo $file--$each

  awk -v filestem= ${$file--$each:2:5} '{filename = filestem; print >> filename}' $file--$each
  done
done

답변1

당신에게는 두 가지 선택이 있습니다

  1. awk에 하위 문자열 적용

    $ awk -v filestem="$file--$each" \
        '{filename = substr(filestem, 3, 6);print >> filename}' 
    
  2. $file--$each변수로 설정 한 다음 해당 변수를 부분 문자열로 묶습니다.

    $ filestem="$file--$each"
    $ awk -v filestem="${filestem:2:5}" \
        '{filename = filestem; print >> filename}'
    

관련 정보