ファイルの特定部分の値を取得します。

ファイルの特定部分の値を取得します。

次の形式の構成ファイルがあります。

<Title>
 [part1]
  A.File = a
  A.Val = val1
  B.File = a
  B.Val = val1
 [part2]
  A.File = a1
  A.Val = val2 
  B.File = a
  B.Val = val1

最初の部分からのみ値を抽出したいと思います。

 #!/bin/sh 
getCalibDate()
{
 file="/path/of/config/file"
 value=`cat ${file} | grep Val | cut -d'=' -f2`
    for v in $value
    do
            echo $v
    done
}
getCalibDate

上記のスクリプトはすべての値を返します。最初の部分(part1)でのみ値を取得するにはどうすればよいですか?

ベストアンサー1

それ以降に4行しかない場合は、次のオプションを[part1]使用できます。-A4grep

cat ${file} | grep -A4 "part1" | cut -d'=' -f2`

一般的な場合([part1]の後に4行以上)、sed2つの部分の間にテキストをインポートするには:

cat ${file} | sed -n "/part1/,/part2/p" | head -n-1

headpart2最後に重複した項目を削除するだけです。

〜のようにテデンを使用する必要がないと言えば、cat次のことができます。

grep -A4 "part1" ${file} | cut -d'=' -f2`

または:

sed -n "/part1/,/part2/p" ${file} | head -n-1

おすすめ記事