我有一个文件,每一行都包含以下类型的表达式“年龄=22 岁,高度=6 英尺”,我只想提取年龄和身高数字。
我努力了
grep -oP '(?<=Age=)[^years]+' $f | awk '{ printf "%d \n",$1; }
并正确获取年龄。我怎样才能同时获得年龄和身高。当我尝试嵌套模式匹配时,我只得到高度。
这是我尝试过的模式
grep -oP '(?<=Age=)[^years]+.+(?<=Height=)[^feet]+' $f | awk '{ printf "%d \n",$1; }
答案1
答案2
$ echo 'Age=22 years and Height=6 feet' | awk -F'[= ]' '{print $2, $6}'
22 6
答案3
我有一个具有以下表达式类型的文件每行“年龄=22 岁,身高=6 英尺”
有了sed
这个-E
选项。
sed -E 's/[^[:digit:]]+/ /g;s/^ //' <<< "Age=22 years and Height=6 feet"
或者如果它是一个指向sed
它的文件。
sed -E 's/[^[:digit:]]+/ /g;s/^ //' file.txt
添加两者年龄和高度到图案。
sed -E 's/^Age=([[:digit:]][^ ]*).*Height=([[:digit:]][^ ]*).*/\1 \2/' file.txt