arr=($(echo "great#man" | awk '{split($0,a,"#"); } END {print a[0]; print a[1];}'))
echo " ${arr[0]} "
echo " ${arr[1]}"
내 예상 결과는 다음과 같습니다
great
man
그런데 점점 더 많아지네요
great
arr[1]은 인쇄되지 않습니다
답변1
이 변형은 나에게 효과적입니다.
$ echo "great#man" | awk '{split($0,a,"#"); } END {print a[1]; print a[2];}'
great
man
~에서온라인 문서:
split(string, array [, fieldsep [, seps ] ])
문자열을 fieldsep으로 구분된 세그먼트로 분할하고 세그먼트를 배열에 저장하고 구분 기호 문자열을 seps 배열에 저장합니다.첫 번째 부분은 array[1]에 저장됩니다., array[2]의 두 번째 부분 등입니다. 세 번째 매개변수 fieldsep의 문자열 값은 문자열을 분할할 위치를 설명하는 정규식입니다(FS와 유사하게 입력 레코드를 분할할 위치를 설명하는 정규식일 수 있습니다. 정규식 필드 분할 참조). fieldsep을 생략하면 FS 값이 사용됩니다. Split()은 생성된 요소의 수를 반환합니다. seps는 seps[i]가 array[i]와 array[i+1] 사이의 구분 문자열인 gawk 확장입니다. fieldsep이 단일 공백인 경우 선행 공백은 모두 seps[0]으로 이동하고 후행 공백은 seps[n]으로 이동합니다. 여기서 n은 분할()의 반환 값(즉, 배열의 요소 수)입니다.