문자열을 awk
으로 전달하면 패턴을 분할 한 후에 부분 문자열이 연관 배열의 색인이됩니다 (값이 아님).문자열을 직접 배열로 분할합니다.
과 같이 :
$ awk -v s="A:B:F:G" 'BEGIN{ # easy, but can these steps be combined?
split(s,temp,":") # temp[1]="A",temp[2]="B"...
for (e in temp) arr[temp[e]] #arr["A"], arr["B"]...
for (e in arr) print e
}'
A
B
F
G
문자열 s
직접 해당 구성 요소가 arr
에서 인덱스 항목을지고와 그 구성 요소로 분할 할 수 있도록 해주는 awkism 또는 gawkism이 있습니까?
이유는 (큰 사진) 나는이 (의사 AWK) 같은 것을 원하는입니다 :
awk -v s="1,4,55" 'BEGIN{[arr to arr["1"],arr["5"],arr["55"]} $3 in arr {action}'
나는'스플릿 (STR, TMP) 생각; for (i in tmp) arr [tmp [i]]'아마도 길이다. 감사! – dawg
두번째 해법에서 * s *의 surroundig separator가 누락되는 것을 피하기 위해이 awk -vs = "A : B : C : G"s ~ "(^ | :)"$ 3 "(: | $)"{action } '' – NeronLeVelu
@NeronLeVelu 그러면 정규식 비교로 바뀌므로 문자열의 정규 표현식 메타 문자에 대해 걱정할 필요가 있습니다. 원래 코드는 문자열 비교 ('$ 3 in arr')를 사용했고,'index() '를 사용하여 게시 한 코드도 regexp 메타 문자가 문자 그대로 취급 될 것입니다. –