次の単純な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]+'