天天看点

linux 中awk和sed使用

显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段:   awk -F % 'NR==7,NR==15 {printf 1 3 7}'

显示文件myfile中的行号和第3字段:   awk '{printf"%03d%s\n",NR,1}' myfile 

显示文本文件mydoc匹配(含有)字符串"sun"的所有行。   awk '/sun/{print}' mydoc

下面的示例显示了内置变量和内置函数length()的使用:   awk 'length(0)>80 {print NR}' myfile   该命令行将显示文本myfile中所有超过80个字符的行号,在这里,用0表示整个记录(行),同时,内置变量NR不使用标志符''

作为一个较为实际的例子,我们假设要对UNIX中的用户进行安全性检查,方法是考察/etc下的passwd文件,检查其中的passwd字段(第二字段)是否为"*",如不为"*",则表示该用户没有设置密码,显示出这些用户名(第一字段)。我们可以用如下语句实现:   #awk -F: '2=="" {printf("%s no password!\n",1' /etc/passwd   在这个示例中,passwd文件的字段分隔符是“:”,因此,必须用-F:来更改默认的字段分隔符,这个示例中也涉及到了内置函数printf的使用