다음과 같이 텍스트 파일에서 줄을 읽는 간단한 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}