

以下のようなログファイルがあります。

[code]

    aaa 1234.234;
    bbbb 5678.345;
    ccc 12345.356;
    
    aaa 2345.344;
    bbbb 6789.354;
    ccc 23456.678;
    
[/code]

このファイルからbbbbの数値、"bbbb "から";"の間のみを抜き出したいです。  
なお、bbbのような文字列はありません。  
この数値の桁数は不定で、a-cのようなデータ組がいくつあるかも不定ですが、  
可能なら別々の変数に、もしくは一つの変数に改行を含めて格納できないでしょうか。

補足です

[code]

    ans=`grep -o `bbbb[^;]*` test.txt`
    
[/code]

でbbbbから;まで抜け出せました。  
更にsedでbbbb を置き換え、

[code]

    ans=`echo "$ans"|sed -e 's/^bbbb //'`
    
[/code]

で改行を含む抽出ができました。  
これを行ごとに別の変数に格納したいのですが、  
やはり行数が分からないと別々は難しいのでしょうか。

補足2  
IFSに改行を指定することでうまくいきました。  
ありがとうございました。


CC BY-SA 4.0
2018-05-29T02:05:37.353
44344
2018-06-04T01:58:27.377
2018-05-29T03:12:57.117
28706
28706
question
linux shellscript
シェルスクリプトで特定の文字列から特定の文字までを抽出したい


いくつか回答いただき、解決したのでまとめます。

[code]

    ans=`awk -F'[ ;]' '$1=="bbbb"{print $2}' test.txt`
    
[/code]

もしくは

[code]

    ans=`grep -o `bbbb[^;]*` test.txt`
    ans=`echo "$ans"|sed -e 's/^bbbb //'`
    
[/code]

によって変数ansに、「bbbb 」と「;」の間だけを改行込みで抜け出しませました。

次に、

[code]

    IFS='
    '
    for i in $ans; do
        echo $i
    done
    
[/code]

echoのところに関数を記述する等で、別の変数として扱えました。  
回答してくださった皆様ありがとうございました。


CC BY-SA 4.0
2018-06-04T01:05:41.520
44501
2018-06-04T01:58:27.377
2018-06-04T01:58:27.377
19110
28706
44344
answer