使用awk来显示全部行,可以使用print $0来搞定,如果碰到要显示从第二行到第末尾的话,比如要显示/etc/passwd文件中,从第二列到第末尾的所有行,可以
[root@localhost ~]# cat /etc/passwd | awk -F: 'print $2, $3, $4, $5, $6, $7'
上面的是因为我们知道/etc/passwd就只有7行,可以一行行列出,如果是未知行,或者行数比较多的话,这样写显然不方便。 这个时候就有个小技巧,让第一列设置为空,这样的话,显示所有$0,就不会包含第一列了,而且又不必一行行列出所有列
[root@localhost ~]# cat /etc/passwd | awk -F: '{$1="";sub(' ', ''); print}'
# $1="" 将第一列默认设置为空
# sub(' ', '') 将第一行空出来的空格去掉
# print 等价于print $0
shell
awk
打印第2-NF
列
结论:
awk
'{$1="";print $0 }'和
awk
'{for(i=2;i<=NF;i=i+1)printf " "$i;print ""}'可
行
。
准备一个文件 1
11 22 33 44
aa bb cc dd ee
AA BB CC DD EE FF
$
awk
'{$1="";print $0 }' 1
22 33 44
bb cc dd ee
BB CC DD EE FF
$
awk
'{for(i=2;i<=NF;i
awk
-F: '{sub(/root/, "ROOT"); print}' password
ROOT:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/va...
' '引用代码块,
awk
执
行
语句必须包含在内
BEGIN{ } 初始化代码块,在对每一
行
进
行
处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
{ } 命令代码块,包含一条或多条命令
// 用...
图解Linux命令之--badblocks命令
mingqiu09:
Shell中字符串排序的几种方法
weixin_42783087: