以下は、「DATA」と「A.1」の両方を含む行を見つけ、「A.1」を「B.2」に置き換えて、新しい出力を提供します。
注: 次のコマンドは、特定のフィールドを区別しません。「DATA」と「A.1」が同じ行にある限り、「A.1」は「B.2」に変更されます。
sed -e '/A\.1.*DATA/!d;s/A\.1/B\.2/' /yourfile
ファイルを編集して他の行をそのままにしておくには、次の bash スクリプトを試してください。以下はインライン編集を含みます。何かをテストする前に、ファイルをバックアップしてください。
#!/bin/bash
ORIG=$(sed -e '/A\.1.*DATA/!d' /yourfile)
NEW=$(sed -e '/A\.1.*DATA/!d;s/A\.1/B\.2/' /yourfile)
sed -i "s/${ORIG}/${NEW}/g" /yourfile
注: OS X ユーザーの場合は、次のことを試してください。-i スイッチは、OS X では少し異なります (スクリプトにはインライン編集が含まれているため、テストする前にファイルをバックアップしてください)。
#!/bin/bash
ORIG=$(sed -e '/A\.1.*DATA/!d' /yourfile)
NEW=$(sed -e '/A\.1.*DATA/!d;s/A\.1/B\.2/' /yourfile)
sed -i '' "s/${ORIG}/${NEW}/g" /yourfile