![如何只打印某些字符?](https://linux22.com/image/34117/%E5%A6%82%E4%BD%95%E5%8F%AA%E6%89%93%E5%8D%B0%E6%9F%90%E4%BA%9B%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
我必须这样翻译文件的权限:
r ► c w ► s x ► e
然后,我必须提取与所有者组相关的字符组。最后一步是打印不带“-”的那组字符(仅字母)。
到目前为止我设法编写了一个命令:
student@vm-uso ~team2 $ ls -l partition
-rw-r--r-- 1 student student 10485760 nov 24 21:04 partition
student@vm-uso ~team2 $ ls -l partition | cut -d ' ' -f 1| tr rwx cse | cut -c5-7
c--
student@vm-uso ~team2 $
转发,我必须添加另一个“|”为了只打印字母(没有字符“-”)。
答案1
我想你想要这个命令:
ls -l partition | cut -c5-7 | tr rwx cse |sed 's/-//'
您可以删除一个额外的命令(cut -d ' ' -f 1
)并将其替换为最后一个剪切命令(cut -c5-7
),并sed 's/-//'
在末尾添加以删除所有-
命令。现在你完成了。你不需要添加额外的|
.
更好的是:您还可以更改破折号(-
带有 Null 字符(\0
)的字符,如下所示):
ls -l partition | cut -c5-7 | tr 'rwx-' 'cse\0'
将 char替换-
为空字符 ( \0
)。
答案2
没有的替代方法ls
:
getfacl -c partition | sed -n '/group::/{s/.*:://;y/rwx/cse/;s/-//g;p;}'
答案3
另一种选择(管道两个tr
命令):
ls -l partition | cut -c5-7 | tr -dc rwx | tr rwx cse