awk에서 탭으로 구분된 값

awk에서 탭으로 구분된 값

https://stackoverflow.com/questions/5374239/tab-separated-values-in-awk#comment23678233_5376527 정확한 코드가 복사되었습니다.

echo "$line" 

돌아올 것이다

LOAD_SETTLED    LOAD_INIT       2011-01-13 03:50:01

지금

  1. echo "$line" | awk '{print $1}' LOAD_SETTLED 반환
  2. echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk '{print $1}'LOAD_SETTLED 반환
  3. echo "$line" | awk -v FS='\t' -v OFS='\t' 'BEGIN {OFS = FS} {$3 = var; print}'전체 행을 반환합니다.
  4. echo "$line" | awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'전체 행을 반환합니다.

노트:전반적으로> LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01

문맥에 따르면 , LOAD_SETTLED어디에서 잘못되었나요?
복사 중인 탭 구분 기호가 무엇인지 잘 모르겠습니다. Ctrl+Tab은 PowerShell에서 터미널 탭을 전환하기 위한 것이므로 WSL에 수동으로 탭을 삽입하는 방법을 모르겠습니다. 질문에서 $line을 복사했습니다.


응, 어쩌면 echo그렇지 않을 수도 있어.

printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n" | awk -v FS='\t' -v OFS='\t' 'BEGIN {OFS = FS} {$3 = var; print}'

반품:
LOAD_SETTLED LOAD_INIT

printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n" | awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'

반품: LOAD_SETTLED LOAD_INIT

LOAD_SETTLED왜 이제 두 개의 필드가 반환되는지 예상해야 합니다 .


원래의답변탭으로 구분된 문자열에서 첫 번째 열을 가져오는 것입니다. 첫 번째 열을 얻기 위해 복사를 시도했습니다. 하지만 이제 두 개의 열이 생겼습니다. 이것이 나의 혼란입니다.

업데이트: 문제가 해결되었습니다. 내 잘못.

답변1

어쩌면 echo가 이 목적에 적합한 도구가 아닐 수도 있습니다. 이것을 시도해 보십시오.

printf "LOAD_SETTLED\tLOAD_INIT\t2011-01-13 03:50:01\n"|awk  '{print $1}'

관련 정보