第十一课预习笔记
9.1-9.3 正则介绍_grep
什么是正则:
正则就是一串有规律的字符串。
百度百科:正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
学习好正则对于编写shell脚本有很大帮助;
各种编程语言中都有正则,原理一样;
1、grep命令
grep命令用于查找文件里符合条件的字符串。
参数:
- -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一行之外,并显示该行之下的内容。
- -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之上的内容。
- -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行上下的内容。
- -i 或 --ignore-case : 忽略字符大小写的差别。
- -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
- -r 或 --recursive : 遍历目录及其子目录。
- -v 或 --revert-match : 显示不包含匹配文本的所有行。
- -c 或 --count : 计算符合样式的行数有多少。
直接用grep查找,没有参数;在CentOS7版本中grep是有 --color=auto参数的。
[root@liang-00 grep]# which grep alias grep='grep --color=auto'/usr/bin/grep [root@liang-00 grep]#

-n参数,标出行号;-c参数,统计符合条件的总行数。

-i参数,不区分大小写。

-v参数,取反查找。
[root@liang-00 grep]# grep -iv 'nologin' passwd #反向查找不带nologin的行。 root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt liang:x:1000:1000::/home/liang:/bin/bash [root@liang-00 grep]#
-r级联遍历目录及子目录查找,在这里我先创建了 ./r_grep 目录,然后把 ./passwd里一部分内容复制到 ./r_grep/r_passwd文件内。

-A后面跟数字n,过滤除符合要求的行以及下面n行;
-B后面跟数字n,过滤除符合要求的行以及上面n行;
-C后面跟数字n,过滤除符合要求的行以及上下n行
[root@liang-00 grep]# grep -A2 'halt' passwd halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@liang-00 grep]# [root@liang-00 grep]# [root@liang-00 grep]# grep -B2 'halt' passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt [root@liang-00 grep]# [root@liang-00 grep]# [root@liang-00 grep]# grep -C2 'halt' passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
‘[0-9]’ 查找含有0-9任意数字的行。


‘^#’ 以#开头的行,‘^o’ 以o开头的行。

‘[^0-9]’ 表示不包含数字的行,‘^[^0-9]’ 如果是这样,表示不是以数字开头的行。
^ 放到方括号外边表示以什么开头,放到方括号里面表示匹配不含什么的行。

‘r.o’ 其中 . 表示匹配一个任意字符(空格也算)。

‘o*o’ 表示*号左边的字符重复零到多次。
‘.*’ 表示匹配任意字符任意次数,包括空行。

‘o\{0,3\}’ 表示匹配 o 零到三次。
有三种方法都可以实现。
1、grep ‘o\{0,3\}’ passwd
2、grep -E ‘o{0,3}’ passwd
3、egrep ‘o{0,3}’ passwd

‘o\+o’ 表示+号左边的字符重复一次到多次。

‘o\?o’ 表示?前的字符匹配零次到一次。

A|B 竖线,匹配A或B。

9.4 sed
sed命令是利用script来处理文本文件。sed可依照script的指令,来处理、编辑文本文件。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed 可以实现 grep 的一些功能。
sed在匹配字符时要写在 / / 内。

如果用到 + ? 等字符匹配要加 -r 选项或者用 \ 脱译。


sed -n '2'p passwd 打印第二行。
sed -n ‘2,6’p passwd 打印二到六行。

sed -n ‘15,$’p passwd 打印第15到最后一行。

-e 选项 在一个表达式中做多个匹配
[root@liang-00 sed]# sed -e '1'p -e '/bus/'p -n passwd #不要忘了-n root:x:0:0:root:/root:/bin/bash dbus:x:81:81:System ooomessage bus:/:/sbin/nologin [root@liang-00 sed]#
当匹配的行相同时,sed中有如果多个匹配同时匹配了同一行,那么匹配了多少次就打印几行。
[root@liang-00 sed]# sed -e '1'p -e '/root/'p -n passwd root:x:0:0:root:/root:/bin/bash #root匹配了两次,就打印两次。 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@liang-00 sed]#
sed中用 I 来不分大小写都匹配。
需求:对服务器上一个非常大的日志文件(可能超过几十个G),就可以用sed删除。首先用 grep 定位时间戳(比如说1月到6月的日志,我们把时间定位到5月31日,然后把之前的日志用 sed 全部删除)
1)、用grep定位:grep -n ‘时间戳’ 日志文件 #匹配出来有n行
2)、用sed -n ‘1,n’d 日志文件 #删除1到n行
sed 删除指定行;-i 对文件本身进行操作。
[root@liang-00 sed]# sed '1,15'd passwd #删除1到15行,没有对文件本身操作。 polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin adasdasf...BUS [root@liang-00 sed]# cp passwd passwd- [root@liang-00 sed]# sed -i '1,15'd passwd #删除1到15行,直接对文件本身操作。 [root@liang-00 sed]# cat passwd polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin adasdasf...BUS [root@liang-00 sed]#
对含有匹配字符的行进行删除操作。

sed替换:这与vim中的替换有点类似,‘n1,n2s/word1/word2/g’
[root@liang-00 sed]# sed '1,10s/root/toor/g' passwd toor:x:0:0:toor:/toor:/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:/var/spool/lpd:/sbin/NOLOGIN sync:x:5:0:sync:rhohsbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/toor:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nooooooobody:/:/sbin/NOLOGIN systemd-network:x:oo192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System ooomessage bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin adasdasf...BUS [root@liang-00 sed]#
sed替换中是可以用正则表达式的,遇到+ ? ( ) {} 等需要脱译或者加 -r 选项。
[root@liang-00 sed]# sed -r '1,10s/ro+/r/g' passwd rt:x:0:0:rt:/rt:/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:/var/spool/lpd:/sbin/NOLOGIN sync:x:5:0:sync:rhohsbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/rt:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nooooooobody:/:/sbin/NOLOGIN systemd-network:x:oo192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System ooomessage bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin adasdasf...BUS
把passwd文件前十行中用 “:” 分割成7段的第一段和最后一段位置互换。
[root@liang-00 sed]# head passwd |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' # /bin/bash:x:0:0:root:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/NOLOGIN:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:rhohsbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail /sbin/nologin:x:11:0:operator:/root:operator
把passwd文件中的第一个字符和最后一个字符互换。
[root@liang-00 sed]# head passwd |sed -r 's/(^.)(.*)(.$)/\3\2\1/' hoot:x:0:0:root:/root:/bin/basr nin:x:1:1:bin:/bin:/sbin/nologib naemon:x:2:2:daemon:/sbin:/sbin/nologid ndm:x:3:4:adm:/var/adm:/sbin/nologia Np:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIl cync:x:5:0:sync:rhohsbin:/bin/syns nhutdown:x:6:0:shutdown:/sbin:/sbin/shutdows talt:x:7:0:halt:/sbin:/sbin/halh nail:x:8:12:mail:/var/spool/mail:/sbin/nologim nperator:x:11:0:operator:/root:/sbin/nologio
替换含有 / 特殊字符的内容。
[root@liang-00 sed]# head passwd |sed 's/\/root/----/' 第一种方法:直接脱译 / 。 root:x:0:0: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:/var/spool/lpd:/sbin/NOLOGIN sync:x:5:0:sync:rhohsbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:----:/sbin/nologin [root@liang-00 sed]# head passwd |sed 's#/root#----#' #第二种方法:改换分隔符,把/换成#或者@。 root:x:0:0: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:/var/spool/lpd:/sbin/NOLOGIN sync:x:5:0:sync:rhohsbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:----:/sbin/nologin
把passwd文件前十行中所有字母删除掉。

把passwd文件的所有行最前面添加字符串。
sed中&符号表示:前面要替换的内容的格式。

9.6 awk
awk工具功能比grep、sed更加复杂。
-F选项 指定分隔符,打印出第一段,{print $1},操作不会更改文本内容。
[root@liang-00 awk]# awk -F ':' '{print $1}' test.txt
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
liang
nginx
[root@liang-00 awk]# {print $1,$2,$3}
{print $0} 打印所有段;默认情况下awk分隔符为“空格”。
awk指定打印后的分隔符,{print $1"#"$2"#"$3}
[root@liang-00 awk]# head -n5 test.txt |awk -F ':' '{print $1"#"$2"#"$3}'
root#x#0
bin#x#1
daemon#x#2
adm#x#3
lp#x#4
[root@liang-00 awk]# awk匹配字符

awk打印指定段匹配某字符的行。
[root@liang-00 awk]# head test.txt |awk -F ':' '$1 ~ /oo/' #打印第一段包含oo的行。 root:x:0:0:root:/root:/bin/bash [root@liang-00 awk]#
awk同样可以使用正则表达式,且不用加脱译字符。
[root@liang-00 awk]# head test.txt |awk -F ':' '$1 ~ /o+/' #打印第一段包含一个到多个o的行。 root:x:0:0:root:/root:/bin/bash daemon:x:2:2:daemon:/sbin:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown operator:x:11:0:operator:/root:/sbin/nologin [root@liang-00 awk]#
awk多个表达式同时使用。
[root@liang-00 awk]# awk -F ':' '/root/ {print $1,$3} /liang/ {print $1,$3,$4}' test.txt
root 0
operator 11
liang 1000 1000
[root@liang-00 awk]#
[root@liang-00 awk]# awk -F ':' '/root|liang/ {print $1,$2}' test.txt
root x
operator x
liang x
[root@liang-00 awk]# awk打印==的段。“==”表示等于,“=”表示赋值。
[root@liang-00 awk]# awk -F ':' '$3==1000 {print $1,$3}' test.txt #等于1000
liang 1000
[root@liang-00 awk]# awk -F ':' '$3>=1000 {print $1,$3}' test.txt #大于1000
liang 1000
[root@liang-00 awk]# awk -F ':' '$3<=1000 {print $1,$3}' test.txt #小于1000
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
sshd 74
postfix 89
chrony 998
liang 1000
nginx 997
[root@liang-00 awk]# awk -F ':' '$3!=1000 {print $1,$3}' test.txt #不等于1000 [root@liang-00 awk]# awk -F ':' '$3=="1000" {print $1,$3}' test.txt #数字带双引号表示字符串的值。
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
sshd 74
postfix 89
chrony 998
nginx 997
[root@liang-00 awk]# awk打印第七段不等于 /sbin/nologin 的行。

awk 两个字段进行比较。
[root@liang-00 awk]# awk -F ':' '$3<$4' test.txt 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[root@liang-00 awk]# awk -F ':' '$3==$4' test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash [root@liang-00 awk]#
awk 中 && 和 || 符号使用,&&表示并且关系;||表示或者关系。
[root@liang-00 awk]# awk -F ':' '$3>"5" && $3<"7"' test.txt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown [root@liang-00 awk]# [root@liang-00 awk]# awk -F ':' '$3>500 || $7=="/sbin/nologin"' test.txt 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:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin liang:x:1000:1000::/home/liang:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin [root@liang-00 awk]#
awk中OFS指定打印出字段的分隔符。
[root@liang-00 awk]# awk -F ':' '{OFS="#"} $3>500 || $7 ~ /bash/ {print $1,$3,$5}' test.txt
root#0#root
polkitd#999#User for polkitd
chrony#998#
liang#1000#
nginx#997#Nginx web server
[root@liang-00 awk]# awk中用 if 来表示满足打印字段的条件。
[root@liang-00 awk]# awk -F ':' '{OFS="#"} {if ($3>500) {print $1,$3,$5}}' test.txt
polkitd#999#User for polkitd
chrony#998#
liang#1000#
nginx#997#Nginx web server
[root@liang-00 awk]# awk中用 NR 表示行 NF表示段。
[root@liang-00 awk]# awk -F ':' '{print NR":"$0}' test.txt #表示打印出所有行带行号。
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:liang:x:1000:1000::/home/liang:/bin/bash
21:nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@liang-00 awk]#
[root@liang-00 awk]# awk -F ':' '{print NF":"$0}' test.txt #打印出每行有多少段。
7:root:x:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7:halt:x:7:0:halt:/sbin:/sbin/halt
7:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7:operator:x:11:0:operator:/root:/sbin/nologin
7:games:x:12:100:games:/usr/games:/sbin/nologin
7:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
7:nobody:x:99:99:Nobody:/:/sbin/nologin
7:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
7:dbus:x:81:81:System message bus:/:/sbin/nologin
7:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
7:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
7:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
7:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
7:liang:x:1000:1000::/home/liang:/bin/bash
7:nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@liang-00 awk]# awk打印文件的前十行。
[root@liang-00 awk]# awk -F ':' 'NR<=10' test.txt 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:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@liang-00 awk]#
awk打印文件前十行中满足一定条件的行。
[root@liang-00 awk]# awk -F ':' 'NR<=10 && $1 ~ /root|halt/' test.txt root:x:0:0:root:/root:/bin/bash halt:x:7:0:halt:/sbin:/sbin/halt [root@liang-00 awk]#
awk中用 $NR和$NF 打印每行行号所在的段和最后一段。

awk 给段赋值。
[root@liang-00 awk]# head -n3 test.txt |awk -F ':' '{OFS="#"} $1="root"'
root#x#0#0#root#/root#/bin/bash
root#x#1#1#bin#/bin#/sbin/nologin
root#x#2#2#daemon#/sbin#/sbin/nologin
[root@liang-00 awk]# awk中的循环。

撰写本博客所用到的参考文献:
http://man.linuxde.net
http://www.runoob.com/
http://ask.apelearn.com
https://www.baidu.com/
https://www.google.com
转载于:https://my.oschina.net/u/3993922/blog/2874402
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
