2017-04-04 52 views
0

このスクリプトは、テキストファイルから行を読み込みます。線はこのように見えます。Bashの文字列から文字列を抽出する

227 A S comment=comment string dst-address=9.9.9.9/29 gateway=192.168.199.2 gateway-status=192.168.199.2 reachable via LACP1=1 scope=30 target-scope=10 

これは、私は、その変数$subnetとして9.9.9.9/29を割り当てる必要があり、変数$ルート

が割り当てられます。 awkを使用することはできません。なぜなら、dst-addressの列の位置は行によって異なるからです。

要約すると "dst-address="の各行を検索してから、変数 '$'の後に '='の後の文字列を割り当てる必要があります。

私の理想的な解決策は

while read routes ; do 
    subnet=< code I need > 
done < /tmp/routingTable.txt 
+1

'grepの-OP「DSTアドレス= \ K [ ^] * ''? – 123

+0

非常に便利なコマンドですが、私はそれを他の用途に使うつもりです。ありがとうございました! –

答えて

0

ループ無しのbash溶液

echo $route | sed -r "s/.*dst-address=([0-9./]+).*/\1/" 
+0

パーフェクトポールありがとう! –

+2

これはどのようにbashソリューションですか、あなたはsedを使用しています... – 123

0

Perl溶液である:

perl -n -e'/dst-address=(\S+)/ && print $1."\n"' your_file 
関連する問題