我只提出一个问题以避免垃圾邮件。我有 3 种情况不知道应该使用哪些命令。它们是:
列出所有具有至少其名称有 3 个字母。
计算有多少个文件具有“所有者的写入权限”。
我有一个
BD.txt
包含以下内容的文件(例如):
Mary:Boston:20 John:New York:18 Paul:New York:25 Andrew:New Paris:30
我需要显示有多少人居住在纽约。通常,我使用:
cat BD.txt | grep **place_name** | wc -l
但这只在我想查找单个单词时才有效。如果我输入“New York”,该命令将计算所有包含名称“New”的行,而忽略其余行(由于空格字符)。
在这些情况下我应该使用什么?
答案1
我会尽力帮你一点忙,但不会帮你做作业——
问题 1 - 列出文件:“?”字符表示 1 个(非空)通配符,而“*”字符表示 0 个或更多字符。
问题 2 - ls -l 将在行首显示每个文件的权限,cut 命令可用于选择一个字符或字符范围。对于 ls -l,如果第三个字符是“w”,则表示所有者具有写权限。
问题 3 - 您忽略了几个问题 - 当您按照预期的方式使用 grep 时,您不会使用“*”字符 - grep 正在寻找给定的子字符串。字符 ' 和 " 用于将字符串(包括空格字符)指定为单个参数。'\' 字符将使紧随其后的任何字符都按字面意思解释,而不是由 shell 扩展。(顺便说一下,这个答案至少给出了 3 个解决方案)