这是我通过ls -l获得的一些示例输入:

-rwxr-xr-x 1 root root    1779 Jan 10  2014 zcmp
-rwxr-xr-x 1 root root    5766 Jan 10  2014 zdiff
-rwxr-xr-x 1 root root     142 Jan 10  2014 zegrep
-rwxr-xr-x 1 root root     142 Jan 10  2014 zfgrep
-rwxr-xr-x 1 root root    2133 Jan 10  2014 zforce
-rwxr-xr-x 1 root root    5940 Jan 10  2014 zgrep
lrwxrwxrwx 1 root root       8 Dec  5  2015 ypdomainname -> hostname


我想仅使用sed来打印出最后一列和第五列:

zcmp 1779
zdiff 5766
zegrep 142
zfgrep 142
zforce 2133
zgrep 5940
ypdomainname -> hostname 8


我试图找到一个正则表达式来匹配,但没有成功。而且我也不允许使用awkcut
先感谢您。

最佳答案

尝试这个;

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

关于regex - 仅使用“sed”而不使用“awk”从记录中选择特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38758214/

10-16 03:44