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