テキストファイルで最初に表示される整数の検索

テキストファイルで最初に表示される整数の検索

次の単純なbashスクリプトがあります

#!/bin/bash
mtp-files > test_list.txt
echo "Hello World"
ID="$(cat test_list.txt | egrep '^(File) ID: ')"

#read FILE_ID <<<"$ID"

echo $ID

それは印刷されます

File ID: 6 File ID: 6 File ID: 6

しかし、必要なのは「ファイルID」が最初に出るか、整数値6だけです。
私のスクリプトでどのような変更が必要ですか?

ロードされたテキストファイルです。

libmtp version: 1.1.10

mtp-files: Successfully connected
Android device detected, assigning default bug flags
Listing File Information on Device with name: Foo Device
File ID: 6
   Filename: 20161208_155851.jpg
   File size 658911 (0x00000000000A0DDF) bytes
   Parent ID: 2
   Storage ID: 0x00010001
   Filetype: JPEG file
File ID: 6
   Filename: 20161208_155851.jpg
   File size 658911 (0x00000000000A0DDF) bytes
   Parent ID: 2
   Storage ID: 0x00010001
   Filetype: JPEG file
File ID: 6
   Filename: 20161208_155851.jpg
   File size 658911 (0x00000000000A0DDF) bytes
   Parent ID: 2
   Storage ID: 0x00010001
   Filetype: JPEG file
OK.

ベストアンサー1

複数の整数が行に表示されても、ファイルから最初の整数を抽出するには、次の手順を実行します。

egrep -m1 -o '[0-9]+' /path/to/inputfile | head -n1

特定の行に1つの整数しか表示されない場合、その行へのパイプ接続はhead重複します。

編集された質問が示すように、「ファイルID:」が一意に表示されるたびに検索する場合:

egrep '^FILE ID: [0-9]+' /path/to/inputfile | sort | uniq

一意の数値IDを取得するには、Rube Goldbergメソッドを使用します。

egrep '^File Id:  [0-9]+' /path/to/inputfile | sort | uniq | egrep -o '[0-9]+'

おすすめ記事