1
read -p "Please enter ID: " staffID 
id=$(grep -w "$staffID" record | cut -d ":" -f1 | sort -u );
echo $id

ファイルから正しい値をgrepしようとすると、いくつかの問題があります。

レコードファイルには以下が格納されます。

12:Griffin:Peter:13:14:16
14:Griffin:Meg:19:19:10
10:Griffin:Loi:19:20:20
130:Griffin:Stewie:19:19:19
13:Wayne:Bruce:19:20:2

私の最初の列には、常に一意であり、grep で探している ID が格納されています。上記のコードでは、ユーザーが入力して画面に表示される一意の ID のみを見つけたいのですが、明らかに 13 を生成する必要があるときに 13 の ID を入力すると、エコーは空白の値を生成します。これを解決するアイデアはありますか?

4

2 に答える 2

1
#!/bin/bash
read -p "Please enter ID: " staffID

#your code was commented out
#id=$(grep -w "$staffID" record | cut -d ":" -f1 | sort -u );

id=$(grep -oP "^${staffID}(?=:)" record)
line=$(grep "^${staffID}:" record)

echo $id #use this line if you just want ID 
echo $line #use this line if you want the line with given ID

コード内のコメントを参照してください

正確な要件はわかりませんが、grepを実行する前に、有効なIDを入力したかどうか、ユーザー入力を確認することをお勧めします([0-9]+)。ユーザーが入力できるため.*

于 2013-01-16T09:56:52.417 に答える