반응형
awk에서 탭으로 구분 된 값
TAB으로 구분 된 문자열에서 첫 번째 열을 어떻게 선택합니까?
# echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F'\t' '{print $1}'
위의 코드는 예상대로 "LOAD_SETTLED"뿐만 아니라 전체 라인을 반환합니다.
최신 정보:
탭으로 구분 된 값의 세 번째 열을 변경해야합니다. 다음은 작동하지 않습니다.
echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt
그러나 구분 기호가 탭 대신 쉼표 인 경우 예상대로 작동합니다.
echo $line | awk -v var="$mycol_new" -F'\t' '{print $1 "," $2 "," var "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "}' >> /pdump/temp.txt
OFS
변수 (출력 필드 구분 기호)를 탭 으로 설정해야합니다 .
echo "$line" |
awk -v var="$mycol_new" -F $'\t' 'BEGIN {OFS = FS} {$3 = var; print}'
( $line
echo 문에서 변수 를 인용해야합니다 )
그들이 정말로 탭인지 확인하십시오! bash에서는 다음을 사용하여 탭을 삽입 할 수 있습니다.C-v TAB
$ echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F$'\t' '{print $1}'
LOAD_SETTLED
필드 구분 기호를 설정할 수 있습니다.
... | awk 'BEGIN {FS="\t"}; {print $1}'
뛰어난 읽기 :
https://docs.freebsd.org/info/gawk/gawk.info.Field_Separators.html
FS
및 OFS
변수를 사용하여 탭으로 구분 된 BIND 영역 파일을 조작합니다. 다음은 내 스크립트 중 하나입니다. https://gist.github.com/RichardBronosky/abe1652c2d5c78c35b92ad02bdf0d0af#file-dns_update-sh-L36-L39
그것의 고기는 :
awk -v FS='\t' -v OFS='\t' \
-v record_type=$record_type \
-v hostname=$hostname \
-v ip_address=$ip_address '
$1==hostname && $3==record_type {$4=ip_address}
{print}
' $zone_file > $temp
이것은 깨끗하고 읽기 쉬운 방법입니다.
echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -v var="test" 'BEGIN { FS = "[ \t]+" } ; { print $1 "\t" var "\t" $3 }'
작동하지 않습니까?
echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk '{print $1}'
참고 URL : https://stackoverflow.com/questions/5374239/tab-separated-values-in-awk
반응형
'Program Tip' 카테고리의 다른 글
session.connection ()은 Hibernate에서 더 이상 사용되지 않습니까? (0) | 2020.10.18 |
---|---|
deque에 벡터 사용을 선호하는 이유 (0) | 2020.10.18 |
Java : 문자열 (IP를 나타내는)을 InetAddress로 변환 (0) | 2020.10.18 |
사용자 정의보기가있는 UIBarButtonItem이 왼쪽 또는 오른쪽 탐색 모음 항목으로 사용될 때 iOS 7에서 제대로 정렬되지 않음 (0) | 2020.10.18 |
gdb의 주어진 주소에서 어셈블리 명령을 중단하는 방법은 무엇입니까? (0) | 2020.10.18 |