当前位置: 技术问答>linux和unix
如何过滤输出中的一列用来输出
来源: 互联网 发布时间:2015-10-30
本文导语: # ls -l lrwxrwxrwx 1 0 0 17 Oct 28 14:42 [ -> ../../bin/busybox -rwsr-xr-x 1 0 0 67917 Jul 17 2001 crontab lrwxrwxrwx 1 0 0 17...
# ls -l
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 [ -> ../../bin/busybox
-rwsr-xr-x 1 0 0 67917 Jul 17 2001 crontab
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 expr -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 find -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 free -> ../../bin/busybox
-rwxr-xr-x 1 0 0 34352 Mar 8 2003 ftpwho
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 hostid -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 id -> ../../bin/busybox
-rwxr-xr-x 1 0 0 19494 Jul 3 2003 ipcs
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 killall -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 logger -> ../../bin/busybox
-rwsr-xr-x 1 0 0 78499 Jul 17 2001 passwd
-rwxr-xr-x 1 0 0 116624 Sep 5 19:45 telnet
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 test -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 top -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 tr -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 traceroute -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 tty -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 xargs -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 yes -> ../../bin/busybox
我想得到第五列的输出,脚本怎么写啊?其他的都信息都不要了。因为是一个嵌入式系统,没有awk,使用sed可以实现么?
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 [ -> ../../bin/busybox
-rwsr-xr-x 1 0 0 67917 Jul 17 2001 crontab
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 expr -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 find -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 free -> ../../bin/busybox
-rwxr-xr-x 1 0 0 34352 Mar 8 2003 ftpwho
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 hostid -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 id -> ../../bin/busybox
-rwxr-xr-x 1 0 0 19494 Jul 3 2003 ipcs
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 killall -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 logger -> ../../bin/busybox
-rwsr-xr-x 1 0 0 78499 Jul 17 2001 passwd
-rwxr-xr-x 1 0 0 116624 Sep 5 19:45 telnet
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 test -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 top -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 tr -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 traceroute -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 tty -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 xargs -> ../../bin/busybox
lrwxrwxrwx 1 0 0 17 Oct 28 14:42 yes -> ../../bin/busybox
我想得到第五列的输出,脚本怎么写啊?其他的都信息都不要了。因为是一个嵌入式系统,没有awk,使用sed可以实现么?
|
我看了下书上说的,
ls -l|sed 's/^...//g;s/....$//g' >1.txt
可以把行首3个字符和行尾4个字符删除,然后输出到1.txt
上面的问题就是,由于每行长度不同,所以从尾部删除定长字符会导致每行不一样长。
所以可以改进为,先把行尾删除到一个特定字符使每行一样长,比如:
ls -l|sed 's/^...//g;s/[a-zA-Z0-9.][a-zA-Z0-9.]*$//g' >1.txt然后再进行处理。
仅供参考。
ls -l|sed 's/^...//g;s/....$//g' >1.txt
可以把行首3个字符和行尾4个字符删除,然后输出到1.txt
上面的问题就是,由于每行长度不同,所以从尾部删除定长字符会导致每行不一样长。
所以可以改进为,先把行尾删除到一个特定字符使每行一样长,比如:
ls -l|sed 's/^...//g;s/[a-zA-Z0-9.][a-zA-Z0-9.]*$//g' >1.txt然后再进行处理。
仅供参考。
|
用cut
|
有perl环境嘛?