【问题标题】:What does ^ character mean in grep ^d?grep ^d 中的 ^ 字符是什么意思?
【发布时间】:2023-05-07 06:46:01
【问题描述】:

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

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

【问题讨论】:

标签: unix command-line grep


【解决方案1】:

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

【讨论】:

  • 感谢您的解释,但提到的链接已损坏,您能再给一个
  • @Avenger 感谢您指出损坏的链接,我会找到合适的并发布。
【解决方案2】:

为了补充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 -lF | grep /$ 的作用与ls -l | grep ^d 相同。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      最近更新 更多