0

私にはコマンドがあります:

ls -l | nawk -v d1=Sep -v d2=26 '{if(match($0,d1)) print $0}'
-rw-rw-r--   1 nobody   nobody        12 Sep 26 11:36 file1
-rw-rw-r--   1 nobody   nobody        14 Sep 26 11:37 file2
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:46 file3
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:44 file4
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:50 file5
-rw-rw-r--   1 nobody   nobody         0 Sep 26 11:00 file6
-rw-rw-r--   1 nobody   nobody         0 Sep 25 11:00 file7
-rw-rw-r--   1 nobody   nobody         0 Sep 26 14:22 ksh
-rwxrwxr-x   1 nobody   nobody       208 Sep 26 16:31 test.sh*
-rwxrwxr-x   1 nobody   nobody        62 Sep 26 15:15 test2.sh*

しかし、私が以下を使用するとき:

ls -l | nawk -v d1=Sep -v d2=26 '{if(match($0,d1 d2)) print $0}'

それは私に何の出力も与えません!!

ご覧のとおり、9月と26日の間にスペースがあり、文字列「9月26日」と一致するように正規表現で同じスペースを使用しています。誰もが助けることができますか?

私は出力が次のようになることを期待しています:

-rw-rw-r--   1 nobody   nobody        12 Sep 26 11:36 file1
-rw-rw-r--   1 nobody   nobody        14 Sep 26 11:37 file2
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:46 file3
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:44 file4
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:50 file5
-rw-rw-r--   1 nobody   nobody         0 Sep 26 11:00 file6
-rw-rw-r--   1 nobody   nobody         0 Sep 26 14:22 ksh
-rwxrwxr-x   1 nobody   nobody       208 Sep 26 16:31 test.sh*
-rwxrwxr-x   1 nobody   nobody        62 Sep 26 15:15 test2.sh*
4

2 に答える 2

0

ユーザー名とグループ名にスペースが含まれていないと仮定すると、これを行うAwkの方法は次のとおりです。

ls -l | nawk -v d1=Sep -v d2=26 '{if(match($6, d1) && match($7, d2)) print $0}'
# NOTE                                 ----^^           ----^^
于 2011-09-26T12:03:41.437 に答える
0
kent$  echo "-rw-rw-r--   1 nobody   nobody        12 Sep 26 11:36 file1
-rw-rw-r--   1 nobody   nobody        14 Sep 26 11:37 file2
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:46 file3
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:44 file4
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:50 file5
-rw-rw-r--   1 nobody   nobody         0 Sep 26 11:00 file6
-rw-rw-r--   1 nobody   nobody         0 Sep 25 11:00 file7
-rw-rw-r--   1 nobody   nobody         0 Sep 26 14:22 ksh
-rwxrwxr-x   1 nobody   nobody       208 Sep 26 16:31 test.sh*
-rwxrwxr-x   1 nobody   nobody        62 Sep 26 15:15 test2.sh*
"|awk -v d1=Sep -v d2=26 'BEGIN{x=d1" "d2}{ if(match($0,x))print $0;}' 

-rw-rw-r--   1 nobody   nobody        12 Sep 26 11:36 file1
-rw-rw-r--   1 nobody   nobody        14 Sep 26 11:37 file2
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:46 file3
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:44 file4
-rw-rw-r--   1 nobody   nobody         0 Sep 26 10:50 file5
-rw-rw-r--   1 nobody   nobody         0 Sep 26 11:00 file6
-rw-rw-r--   1 nobody   nobody         0 Sep 26 14:22 ksh
-rwxrwxr-x   1 nobody   nobody       208 Sep 26 16:31 test.sh*
-rwxrwxr-x   1 nobody   nobody        62 Sep 26 15:15 test2.sh*
于 2011-09-26T12:14:09.880 に答える