문자열과 공백 사이의 텍스트를 일치시키는 방법

문자열과 공백 사이의 텍스트를 일치시키는 방법

다음과 같이 텍스트 파일에서 줄을 읽는 간단한 bash 스크립트가 있습니다.

#!/bin/bash
FILE=$1
while read line; do

done < $FILE

문자열 "-type"과 공백 사이의 텍스트를 일치시키고 싶으므로 내 줄에는 다음이 있습니다.

 random text -type 53 random text

"53"을 추출하여 type_number 변수에 할당하고 싶습니다. Cut, sed, grep 또는 awk 중 어떤 도구가 이러한 작업에 적합합니까?

답변1

using sed -

echo "abcd 1234 -type 53 efgh 5678" |sed -r 's/^.*-type\s+([0-9]+).*$/\1/'
53

여기에 사용된 라인을 $line으로 바꾸고 변수에 할당합니다.

답변2

#!/bin/bash
FILE=$1
while read line; do
type_number=`echo $line |awk '{for(i=1;i<=NF;i++){if($i=="-type")print $(i+1)}}'`
#here you can use your $type_number
done < $FILE

답변3

#!/bin/bash
FILE=$1
while read line; do
number=$(echo "${line}" | awk 'gsub(" *","")$0~/type/{getline;print;exit}' RS=" ")
echo "${number}"
done < ${FILE}

관련 정보