私のファイルは以下で構成されています。おおよそ:
username:username:username:username:username
上記の行は約600文字まで続きます。
コマンドラインから送信されたAPI/HTTPリクエストの引数として使用するために、awk
コマンドを使用しています。
私のスクリプトを使用して、「フォロー」しているユーザーアカウントのリストを取得しています。24時間ごとに、ハードディスクの元のリストと新しく出力されたユーザー名のリストを比較します(そしてecho'ing whoは私をフォローしていません。bashを使用してループにロジックをカプセル化する必要があります。各ユーザー名をテストします。
私の現在のスクリプト:
user=$(awk -F: '{ print $1 }' FILE) # Grab $User to use as an argument.
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file
echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"
SAVE CURRENT FOLLOWERS TO NEW A FILE.
if [[ DIFFERENCE IS DETECTED ]] ; then
echo -ne "$User NO LONGER FOLLOWING YOU\r"
else echo -ne "This user is following you still.\r"
fi
私の質問です。
2つのファイルの違いを出力するにはどうすればよいですか?
あなたが探しているユーティリティはdiff
です。詳細はマニュアルをご覧ください。
ユーザーの並べ替えられていないリストを含む2つのファイルがあるとします。
In file1:
userD
user3
userA
user1
userB
そして
In file2:
user3
userB
userX
user1
次に、file1
ではなくfile2
ではないユーザーの簡単なリストを取得するには、次のようにします
$ comm -23 <(sort file1) <(sort file2)
userA
userD
同様に、file2
のユーザーを取得しますが、file1
のユーザーは取得しません
$ comm -13 <(sort file1) <(sort file2)
userX
リストファイルが既に並べ替えられている場合、これらはそれぞれcomm -23 file1 file2
およびcomm -13 file1 file2
に簡略化できます。
ファイルの内容の違いを表示するのに最適なコマンドは、
vim -d file1 file2
diff [options] from-file to-file
diff
は、2つのファイルfrom-fileとto-fileの内容を比較します。-i
大文字小文字の変更を無視するオプション。大文字と小文字を同等と見なしてください。
詳細については、次のリンクを参照してください。 http://www.computerhope.com/unix/udiff.htm または、マニュアルページをご覧ください。
unixとLinuxのfc
コマンドのような同じウィンドウ、つまりdiff <file_new> <file_old>
コマンドを試すことができます。
それらの前に+++
または---
がある行は変更され、+'s
および-'s
がない行は変更されていません
-
記号の付いた行は新しいファイルから削除されますが、古いバージョンには存在していました
+
記号の付いた行は新しいファイルから追加されますが、古いバージョンのファイルには存在しませんでした
Linux表記
Linuxは>
および<
を使用します
>
は古いファイルの行を意味します<
は古いファイルで変更された新しいファイルの行を意味します
同じファイルの2つ、3つ、または4つのバージョンの違いを表示するために vimdiff に進みます。