다음과 같은 텍스트 줄이 있다고 가정해 보겠습니다.
I have a nice car
줄을 파일에 저장하지 않고 줄의 다른 단어를 다른 위치에서 가져올 수 있는 방법이 있습니까(예: "have" 및 "nice" 부분을 가져오고 싶습니다). 즉, 주어진 줄에서 원하는 위치에 단어를 직접 부여하는 방식을 적용하고 싶다는 것입니다. 해결 방법이 무엇입니까?
답변1
다음을 사용하여 시도해 보세요 awk
.
$ awk '{print $2, $4}' file
여기서 단어 위치는 $x
공백으로 구분됩니다.
예를 들어
$ echo "I have a nice car" | awk '{print $2, $4}'
have nice
답변2
bash에는 배열이 있습니다.
line="I have * nice car"
set -f # disable pathname expansion
words=($line) # no quotes around $line
set +f # re-enable pathname expansion
words
0부터 시작하는 인덱스 배열이므로
# print the 2nd word
echo "${words[1]}" # ==> have
# print the 2nd-last word
echo "${words[-2]}" # ==> nice
문자열을 배열로 변환하면 $IFS
문자열이 쉘 변수에 포함된 문자 시퀀스로 분할됩니다(기본값: 공백, 탭, 개행)
답변3
line="I have a nice car"
fields=$(echo "$line" | awk '{ print $2 " " $4 }')
공백으로 구분됩니다. 문자 위치를 원할 경우 사용하세요 cut
.
답변4
cut
옵션
echo I have a nice car | cut -d\ -f2,4
have nice
어디
-d' '
탭 대신 공백을 사용하도록 Cut에 지시합니다.-f2,4
두 번째 및 네 번째 필드 가져오기