如何只打印某些字符?

如何只打印某些字符?

我必须这样翻译文件的权限:

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

相关内容