^字符在grep ^ d中意味着什么?

时间:2013-06-12 07:05:48

标签: unix command-line grep

当我ls -l | grep ^d时,它只列出当前目录中的目录。

我想知道的是^ d中的字符是什么意思?

3 个答案:

答案 0 :(得分:12)

插入符^和美元符号$是元字符,分别匹配行的开头和结尾处的空字符串.grep仅匹配以“d”开头的行

答案 1 :(得分:4)

为了补充the good answer by The New Idiot,我想指出:

ls -l | grep ^d

显示当前目录中的所有目录。那是因为ls -l在目录信息的开头添加了d

ls -l的格式如下:

-rwxr-xr-x  1 user group    0 Jun 12 12:25 exec_file
-rw-rw-r--  1 user group    0 Jun 12 12:25 normal_file
drwxr-xr-x 16 user group 4096 May 24 12:46 dir
^
|___ see the "d"

为了更清楚,您可以ls -lF

-rwxr-xr-x  1 user group    0 Jun 12 12:25 exec_file*
-rw-rw-r--  1 user group    0 Jun 12 12:25 normal_file
drwxr-xr-x 16 user group 4096 May 24 12:46 dir/

因此ls -l | grep /$将与ls -l | grep ^d完全相同。

答案 2 :(得分:1)

它有两个含义。上面提到的一个“新白痴”指出。另一个同样有用的是在字符类表达式中,它表示否定:grep -E '[^[:digit:]]' accepts any character except a digit. The ^`必须是[]中的第一个字符。