선의 다른 부분 가져오기

선의 다른 부분 가져오기

다음과 같은 텍스트 줄이 있다고 가정해 보겠습니다.

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

words0부터 시작하는 인덱스 배열이므로

# 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두 번째 및 네 번째 필드 가져오기

관련 정보