2

私はこのような文字列を持っています

string="xxxxx.yyyyy[2].zzzzz"

の間の数字を抽出したい[ ]。次のawkコマンドを使用しました

echo $string | awk -F'[]' '{print $2}'

しかし、このawkコマンドはエラーを返します:

awk: bad regex '[]': Unmatched [ or [^

それを修正する方法は?

4

4 に答える 4

0

sedを使用:

echo "xxxxx.yyyyy[2].zzzzz" | sed -r 's/.*\[(.*)\].*/\1/g'

awk を使用:

 echo "xxxxx.yyyyy[2].zzzzz" | awk 'BEGIN {FS="[";RS="]"} {print $2}'
于 2014-11-06T11:10:49.147 に答える
0

これは、より一般的なアプローチです。テキストファイルから任意の数値を取得します。

echo "xxxxx.yyyyy[2].zzzzz" | awk -F "[^0-9]*" '{for (i=2;i<=NF;i++) printf "%s%s",$i,(i==NF?RS:" ")}'
2

その他の例

cat file
"C 56","Home athletics center","LAC"
"D001","50M Run","50M"
"D003","10.505M Run","100M","42K"

awk -F "[^0-9.]*" '{for (i=2;i<=NF;i++) printf "%s%s",$i,(i==NF?RS:" ")}' file
56
001 50 50
003 10.505 100 42
于 2014-11-06T11:26:17.657 に答える
0

grep

echo "xxxxx.yyyyy[2].zzzzz" | grep -oE '[0-9]'

2
于 2014-11-06T11:14:09.380 に答える