LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3237|回复: 8

如何用awk打印除第一列之外的所有列?

[复制链接]
发表于 2006-12-31 12:21:37 | 显示全部楼层 |阅读模式
实际情况是这样的。
当lspci的时候,
最前面会显示如:
00:00.0 Host bridge: Intel Corp. 82865G [Springdale-G] Chipset Host Bridge (rev 02)

我想去掉如00:00.0的标识,只保留其他的。


由于按空格分割的话,列数不固定,所以不能手工填入所有需要的列。
写了个循环判断
lspci|awk '{N=2;while (N<NF) { printf $N;N=N+1};if (N==NF) print}'
但发现有问题。

请大家指教一下。谢谢
发表于 2006-12-31 15:36:13 | 显示全部楼层
lspci | cut -d " " -f2-
回复 支持 反对

使用道具 举报

发表于 2006-12-31 16:44:24 | 显示全部楼层
lspci | sed 's/.* \{1\}//'
回复 支持 反对

使用道具 举报

发表于 2006-12-31 19:21:21 | 显示全部楼层
awk '{for (i=2;i<=NF;i++) {printf $i}printf "\n"}'
回复 支持 反对

使用道具 举报

发表于 2007-1-1 20:44:21 | 显示全部楼层
好像只有2楼的可以工作正常
我测试了一下,有什么不对的地方,请指正

[root@localhost ~]# cat testfile
1 xorg-x11-font-utils-6.8.2-1.EL.13.37.i386.rpm sdfslf
2 xorg-x11-sdk-6.8.2-1.EL.13.37.i386.rpm dsfsf dfsf
3 xorg-x11-tools-6.8.2-1.EL.13.37.i386.rpm
4 xorg-x11-twm-6.8.2-1.EL.13.37.i386.rpm
5 xorg-x11-xauth-6.8.2-1.EL.13.37.i386.rpm
[root@localhost ~]# cut -d" " -f2- testfile
xorg-x11-font-utils-6.8.2-1.EL.13.37.i386.rpm sdfslf
xorg-x11-sdk-6.8.2-1.EL.13.37.i386.rpm dsfsf dfsf
xorg-x11-tools-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-twm-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-xauth-6.8.2-1.EL.13.37.i386.rpm
[root@localhost ~]# sed 's/.* \{1\}//' testfile
sdfslf
dfsf
xorg-x11-tools-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-twm-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-xauth-6.8.2-1.EL.13.37.i386.rpm
[root@localhost ~]# awk '{for (i=2;i<=NF;i++) {printf $i}printf "\n"}' testfile
xorg-x11-font-utils-6.8.2-1.EL.13.37.i386.rpmsdfslf
xorg-x11-sdk-6.8.2-1.EL.13.37.i386.rpmdsfsfdfsf
xorg-x11-tools-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-twm-6.8.2-1.EL.13.37.i386.rpm
xorg-x11-xauth-6.8.2-1.EL.13.37.i386.rpm
回复 支持 反对

使用道具 举报

发表于 2007-1-1 20:55:00 | 显示全部楼层
lspci | while read first else; do echo $else; done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-4 11:56:26 | 显示全部楼层
经过测试,
2楼的需要改为 cut -d " " -f2-
3楼的不通过,只显示了最后一列
4楼的打印出来的是删除了空格的全部字符。
6楼的成功运行。

多谢大家的热心帮忙!

呵呵,真是条条大路通罗马。
回复 支持 反对

使用道具 举报

发表于 2007-1-4 13:19:47 | 显示全部楼层
lspci | awk '{ $1="";print $0 }'
回复 支持 反对

使用道具 举报

发表于 2007-1-4 20:18:25 | 显示全部楼层
楼上这个会把第一列后边的空格打印

如果不介意用Perl

  1. lspci | perl -lane ' print "@F[1 .. $#F]"  '

  2.   lspci | perl -pe ' s/.*? // '
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表