Regex 仅使用“sed”而不使用“awk”从记录中选择特定列

Regex 仅使用“sed”而不使用“awk”从记录中选择特定列,regex,linux,shell,sed,Regex,Linux,Shell,Sed,下面是我从ls-l中获得的一些示例输入: 我想只使用sed打印最后一列和第五列,如下所示: zcmp 1779 zdiff 5766 zegrep 142 zfgrep 142 zforce 2133 zgrep 5940 ypdomainname -> hostname 8 我试图找到一个正则表达式来匹配,但没有成功。我也不允许使用awk或cut。 提前谢谢。试试这个 ls -l | sed -r 's/^(\S+\s+){5}(\S+\s+){3}/\1/' | sed '

下面是我从ls-l中获得的一些示例输入:

我想只使用sed打印最后一列和第五列,如下所示:

zcmp 1779 
zdiff 5766
zegrep 142
zfgrep 142
zforce 2133 
zgrep 5940 
ypdomainname -> hostname 8 
我试图找到一个正则表达式来匹配,但没有成功。我也不允许使用awk或cut。 提前谢谢。

试试这个

 ls -l | sed -r 's/^(\S+\s+){5}(\S+\s+){3}/\1/' | sed 's/^\(.*\) \(.*\)$/\2\ \1/g'

“不允许”听起来更像是家庭作业,而不是关于如何完成一项实际任务的问题。我们不是来为您做这件事的,我们是来帮助您修复代码的。用您解决问题的最佳尝试、您当前的输出、任何错误消息以及您认为代码应该工作或不应该工作的一般说明更新您的Q,您可能会得到一些帮助。祝你好运。还要考虑一下,当某些文件的名称中有空格时,使用“sed”的答案将如何处理这种情况。
 ls -l | sed -r 's/^(\S+\s+){5}(\S+\s+){3}/\1/' | sed 's/^\(.*\) \(.*\)$/\2\ \1/g'