だから私は多くの情報を含むファイルを持っており、情報の各「塊」には次の一意の識別子があります。
「インデックス」:数字
Linuxで次のコマンドを使用した後:
$ cat file | grep index
私は次のような結果を得ます。
"index": 1
"index": 2
"index": 3
...
"index": 10001
その間に、連続形式の一連の数字があります。
そこのどこかに数字が抜けていますが、その数字を把握しようとしています。
私はいくつか試してみましたが、そのうち何も動作しませんでした。追加できる他のコマンドはありますか?または、欠落しているインデックスマークを検索するより良い方法はありますか?
ベストアンサー1
このコマンドを使用して、diff
ファイルと N から M までの一連の数字の違いを確認できます。このawk
コマンドは、テキストを解析して数字のみを取得するために使用されます。
diff --side-by-side --suppress-common-lines <(awk '{print $2}' file.txt) <(seq 1 10001) | awk '{print $2}'
上記のコードは1
ファイル番号をのシーケンスと比較します10001
。
以上機能のこれを実装する方法は、ファイルの最後の番号(10001)を検出して変数に割り当てることです。
max=$(tail -1 file.txt | awk '{print $2}')
diff --side-by-side --suppress-common-lines <(awk '{print $2}' file.txt) <(seq 1 $max) | awk '{print $2}'
たとえば、次のようになります。
ファイル.txt:
"index": 1
"index": 5
"index": 8
"index": 9
"index": 10
"index": 12
"index": 13
"index": 15
max=$(tail -1 file.txt | awk '{print $2}')
diff --side-by-side --suppress-common-lines <(awk '{print $2}' file.txt) <(seq 1 $max) | awk '{print $2}'
出力:
2
3
4
6
7
11
14
ただし、欠落している値をこの形式で印刷するには、最後のステートメントを次のように"index": the_missing_number
変更できます。awk print
diff --side-by-side --suppress-common-lines <(awk '{print $2}' file.txt) <(seq 1 $max) | awk '{print "\"index\": "$2}'