次の形式の構成ファイルがあります。
<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]
使用できます。-A4
grep
cat ${file} | grep -A4 "part1" | cut -d'=' -f2`
一般的な場合([part1]の後に4行以上)、sed
2つの部分の間にテキストをインポートするには:
cat ${file} | sed -n "/part1/,/part2/p" | head -n-1
head
part2
最後に重複した項目を削除するだけです。
〜のようにテデンを使用する必要がないと言えば、cat
次のことができます。
grep -A4 "part1" ${file} | cut -d'=' -f2`
または:
sed -n "/part1/,/part2/p" ${file} | head -n-1