如何匹配字符串和空格之间的文本

如何匹配字符串和空格之间的文本

我有一个简单的 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}

相关内容