用awk命令完成下列任务。 ①用awk 打印整个pwd.txt。 ②查找所有包含“bash”的行。 ③用“:”作为分隔符,查找第3段等于0的行。 ④用“:”作为分隔符,查找第1段为“root”的行,并把该段的“root”换成“toor”(可以连同sed一起使用)。 ⑤用“:”作为分隔符,打印最后一段。 ⑥打印行数大于20的所有行。 ⑦用“:”作为分隔符,打印所有第3段小于第四段的行。 ⑧用“:”作为分隔符,打印第1段及最后一段,并且中间用“@”连接(如第1行的形式“root@/bin/bash”)。
我好像真的没事做了。哈哈
①用awk 打印整个pwd.txt。
$ awk '{print $0}' pwd.txt
②查找所有包含“bash”的行。
$ awk '{if (match($0,/bash/)) {print $0}}' /etc/passwd
③用“:”作为分隔符,查找第3段等于0的行。
$ awk -F: '{if ($3==0) {print $0}}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
④用“:”作为分隔符,查找第1段为“root”的行,并把该段的“root”换成“toor”(可以连同sed一起使用)。
$ awk -F: '{if ($1=="root") {sub("root","toor",$0) ;print $0}}' /etc/passwd
toor:x:0:0:root:/root:/bin/bash
⑤用“:”作为分隔符,打印最后一段。
$ awk -F: '{print $NF}' /etc/passwd
⑥打印行数大于20的所有行。
$ awk -F: '{if (NR>20){print $0} }' /etc/passwd
⑦用“:”作为分隔符,打印所有第3段小于第四段的行。
$ awk -F: '{if ($3<$4) {print $0}}' /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
⑧用“:”作为分隔符,打印第1段及最后一段,并且中间用“@”连接(如第1行的形式“root@/bin/bash”)。
$ awk -F: '{print $1"@"$NF}' /etc/passwd
root@/bin/bash