【发布时间】:2011-09-26 11:33:10
【问题描述】:
我有一个命令:
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}'
它没有给我任何输出!!
如您所见,Sep 和 26 之间有一个空格,我在正则表达式中使用相同的空格来匹配字符串“Sep 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*
【问题讨论】:
-
你期望它产生什么输出?
-
我很惊讶地看到一个downvote!!!我认为这个问题很清楚。我正在尝试搜索日期为 9 月 26 日的文件..我希望输出只有文件'ls -l' 的日期是 9 月 26 日。Downvoter。请敢于发表评论。
-
您不需要在
"d1 d2"周围加上引号吗? -
我已经尝试过“d1 d2”。这实际上会搜索 sting “d1 d2”,但不会搜索“Sep 26”
标签: shell unix awk solaris nawk