現場で、ある定義ファイルを変更する作業を自動化するという試みをしており、その中で変更前と変更後の差分取得のシェル作成に手間取っています。具体的には
①bef.txtファイルとaft.txtファイルをif文で1行ずつ比較する。
②差分があった場合、aft.txtの該当行と、事前に用意した変更部分のみ記載したaft2.txtを1行ずつ比較する。
③差分が無ければ途中となっている①の処理に戻る。
これにより変更されるべき部分が正しく変更されたこと、変更されてはいけない部分が変更されていないことの2点が証明できることが目的です。
###発生している問題・エラーメッセージ
・1行ずつ処理する場合、行番号を変数に入れて1ずつ増加していく方法を
取ると思うが、「1行目から最終行まで」と指定する方法がわからない。
・上記②の部分の処理方法がわからない。
###該当のソースコード
for Num in seq 100
do
bef1=sed -n "$Num"P "/work/bef1.txt"
aft1=sed -n "$Num"P "/work/aft1.txt"
if [ $bef1 = $aft1 ];then
echo "OK"
else
echo"NG"
fi
done
###試したこと
半日ネットで調べたのですが、for文にてループ、if文にて比較というところまでしかわかりませんでした。初心者のため、1行ずつ行番号を変数に格納し引数に指定する。if文で比較する。と分けてもここまでしか考えられませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Linuxのシェルスクリプト
【追記】
diffコマンドだと、ある特定条件下で正常に作動しないことが過去にあったようです。何故正常に作動しなかったかは不明で、調べても何もヒットしなかったのですが、過去にその事例があったため今回はif文での比較をしたいと考えています。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/27 10:39
2017/11/27 11:58
2017/11/27 12:27
2017/11/28 04:56