我有一个示例/ etc / passwd文件,如下所示:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
我正尝试在中列出所有带有主文件夹的用户/home/
。
我写
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
其中e.txt是我在此处复制的文本。
我知道反斜杠存在一个问题,即转义字符,但是如何解决它,以便可以在命令的一行中列出它们?
猫e.txt | grep主页| 切-d“:” -f 1
—
Arpit Agarwal
由于所有用户的UID为1000,因此可能有些棘手。
—
StrongBad
@ArpitAgarwal
—
NieDzejkob
grep home e.txt | cut -d ":" -f 1
。恭喜您获得了UUOC奖。但是,这不是一个好的解决方案。如果有服务“ homebackups”在以守护程序命名的单独用户下运行,该怎么办?这是一个错误的肯定。
@Philippos re“将[可以]作为文件名的参数分配给工具并传递给工具几乎是没有意义的” –我通常使用
—
David Spillett
cat > tool
此类命令行的变体,因为它可以通过保持从左到右的流程来提高清晰度管道链的输入处理输出。这是效率较低,但几乎总是最小左右。这也使得将酌情及有用的运行交互非常明显,当进度条(只更换cat
用pv
,如果已安装)。
cat
和管一样的工具awk
或sed
或类似的,因为他们可以给出文件名作为参数。