5行目の特定の数字をgrepしますが、25や52などは該当しません。

5行目の特定の数字をgrepしますが、25や52などは該当しません。

ユーザーIDのユーザーを見つける必要があります。認証システムの戻り結果は次のとおりです。これで、bashスクリプトを使用して正確な数の行を抽出する必要があります。 5でも25でもない..

------------
ID  LOGIN   
------------
28  user1
25  user2 
5   user3

使用するとgrep 52つの行ができますが、「5」の行が必要です。

どんなアイデアがありますか?

答え1

これを行う方法はいくつかあります。

IMHOの最良の方法はを使用することです。awkこれはフィールドを処理するのに役立ちます。

grep以下に基づいたソリューションが必要な場合:

grep -w '^5'

正確な単語と一致するように-w指示するため、「52」と一致しません。grep"^" は grep に行の先頭から 5 を検索するように指示します。たとえば、先行スペースがある場合、検索は失敗します。

解決策はawk次のとおりです。

awk '$1 == 5'

ユーザー名だけが必要な場合は、2番目の列は次のようになります。

awk '$1 == 5 {print $2}'

数値以外の文字列を検索する場合は、文字列を二重引用符で囲みます。

awk '$1 == "abc" {print $2}'

答え2

正規表現(行の最初の文字)を使用し、スペースを含めることができます。

grep -E "^5 "

答え3

以下を試してください。

query-auth-system | grep "^5\\>"
  • ^:「行の先頭で一致することを意味します。
  • \\>:単語の境界と一致します。したがって、一致5が一致しません50

関連情報