2つのファイル間の文字列の検索

2つのファイル間の文字列の検索

file1とfile2という2つのファイルがあります。

file1の内容は次のとおりです。

ABC_DEC_EDC=ON
WER_QSD_RCS=ON

ファイル2の内容は次のとおりです。

TRD_OIY_REC=ON
YUH_PON_UYT=ON
WER_QSD_RCS=OFF

file2の内容を1行ずつ確認する必要があります。

最初

if ABC_DEC_EDC=ONfile2には存在せず、file2に追加されます。

第二

最初のファイルに;SAX_IUY_TRE=OFFがありますが、OFFファイル2には;SAX_IUY_TRE=ONがあります。ONこの場合、ファイルを更新したいと思いますOFF

例:SAX_IUY_TRE=OFF

すべての更新はfile2でのみ発生します。

出力は次のようになります。

ABC_DEC_EDC=ON
WER_QSD_RCS=ON
    WER_RTC_YTC=ON
WER_QSD_RCS=OFF

ベストアンサー1

sh実装する。

#!/bin/sh

while read -r LINE
do
    setting=$(echo $LINE | sed 's/=.*//')
    switch=$(echo $LINE | sed 's/.*=//')

    found=$(grep "$setting" file2)
    if [ -z "$found" ]
    then
        echo $LINE >> file2
    else
        if [ "$switch" != "$(echo $found | sed 's/.*=//')" ]
        then
            sed -i "s/\($setting\).*/\1=$switch/" file2
        fi
    fi
done < file1

このスクリプトは、一致しない2つのファイルで見つかった設定値を反転します。

おすすめ記事