awk 함수를 통해 열 5의 "&" 위치를 하위 문자열 값 2 또는 하위 문자열 값 3으로 결정하는 방법
column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7|
답변1
u.awk
다음 과 같이 시도하다
BEGIN { FS="|" ; }
{
n=split($5,A,"&") ;
for ( i=1; i <= n ; i++ ) {
printf "%d-th & at position %d\n",i,length(A[i])+i ;
split(A[i],B,":") i;
printf "\t[%s] : [%s]\n",B[1],B[2] ;
}
}
주어진 입력은
column1|column2|column3|column4|variable1:value1 & variable2:value2 & variable3:value3 & variable4:value4|column6|column7|
COLn1|COLn2|COLn3|COLn4||COLn6|COLn7|
Tue Oct 13 10:56:50 CEST 2015
부르다awk -f u.awk u
1-th & at position 18
[variable1] : [value1 ]
2-th & at position 20
[ variable2] : [value2 ]
3-th & at position 21
[ variable3] : [value3 ]
4-th & at position 21
[ variable4] : [value4]
- 열 5는 비어 있습니다
for( .. )
(n이 0이므로). - 또한 공백 문자는 처리되지 않습니다.
- 고쳐 쓰다
&
입장을 취하다
답변2
AWK 사용:
awk -F['&''|'] '{ split($6,a,":");print a[2] }' input_file