shell三剑客:grep、sed、awk
77 cd /opt/soft/shelldemo/ 进入shelldemo
78 ls
79 ll
80 cp /etc/passwd .
81 ls
82 vi ./passwd
83 grep root passwd 找到root
84 grep ^root passwd 找到抬头是root ^
85 grep bash$ passwd 找到末尾是bash $
86 grep -i ROOT passwd 找到root 忽略大小写
87 cat test.txt 显示test.txt内容
88 vi ./test.txt 进入test.txt
89 cat test.txt
90 grep tom test.txt 查找test文件中的tom
91 grep -i tom test.txt 查找test文件中的tom Tom 大小写都行
92 grep d..k test.txt 查找test文件中的d..k
93 grep -E "root|ROOT" passwd 正则表达式 查找passwd中的root
95 cat -n passwd 显示行号
97 cat -n passwd | grep root 显示行号,并且找出passwd中的root
100 cat -n passwd | grep root -2 显示上下两行
101 cat -n passwd | grep root -A2 显示root的下面两行
102 cat -n passwd | grep root -B2 显示root的上面两行
103 cat -n passwd | grep r..t 查找passwd中的r..t
104 grep tom test.txt 查找test.txt中的tom
105 grep Tom test.txt 查找test.txt 中的Tom
106 cp /etc/fstab . 复制文件fstab
107 ll
108 cat fstab 查看fstab文件内容
109 cat -n fstab 显示fstab内容行数
110 cat -n fstab | sed -n 4p 只显示fstab第4行
113 cat -n fstab | sed -n 3,6p 显示3-6行的内容
114 cat -n fstab | sed -n '3p;6p' 只显示第3行和第六行
115 sed -n '/#/p' fstab 显示所有#行
116 grep '#' fstab 显示所有#行
118 sed -n '/#/!p' fstab 显示所有不含#行
120 sed -n '/2021$/p' fstab 只显示fstab中2021结尾的行列
121 history
122 sed -n '/info$/p' fstab 只显示fstab中info结尾的行列
123 sed -n '/\:/p' fstab 显示所有含:的行
124 sed -n '/^$/!p' fstab 空行不显示
125 sed -n '/^UUID/p' fstab 显示UUID行
126 sed '/^$/!p' fstab 空格不输出 ,输出两遍
127 sed '/^$/!p' fstab | sed '/^#/!p' 空格不输出,四遍
128 sed -n '/^$/!p' fstab | sed -n '/^#/!p' 空格、#号开头不输出
129 sed -n '/^$/!p' fstab | sed -n '/^#/!p' | sed -n '/^UUID/!p' 空格、#号/UUID开头不输出
130 sed '/^UUID/d' fstab UUID开头不输出
131 sed '/^UUID/!d' fstab UUID开头输出
132 sed '/^#/d' fstab #号开头不输出
133 sed '/^$/d' fstab 空格不输出
135 cat -n fstab 显示fstab行数以及内容
136 cat -n fstab | sed '5d' 显示行数,删掉第5行
137 cat -n fstab | sed '1,5d' 显示行数,删掉1-5行
138 cat -n fstab | sed '1d;5d' 显示行数,删掉第1行和第5行
139 sed '/^UUID/ahello' fstab 在UUID行下一行插入hello
140 sed '/^UUID/ahello world' fstab 在UUID行下一行插入hello world
141 sed '/^UUID/ahello world\nwelcome kb15' fstab 在UUID行下两行插入hello world 以及 welcome kb15
142 sed '2ahello world\nwelcome kb15' fstab 在第2行插入hello world 以及 welcome kb15
144 cat -n fstab 显示fstab内容行数
146 cat -n fstab | sed '2ahello world\nwelcome kb15' 显示行数,在第2行插入hello world 以及 welcome kb15
147 cat -n fstab | sed '2ihello world\nwelcome kb15' 显示行数,删除第2行的hello world 以及 welcome kb15
148 sed '/#/ckb15' fstab 把#号替换成kb15
150 sed -i.bat '/^#/cKB15' fstab 修改文件,并且备份
151 cat fstab
152 rm -rf fstab 删除文件fstab
153 cp /etc/fstab . 拷贝文件fstab
154 ll
155 cat -n fstab 显示fstab行数以及内容
156 sed '/^UUID/w fs' fstab 查到fstab中的UUID,并写入fs中
157 cat fs 显示fs内容
159 vi insertcotent 打开文件insertcotent
160 sed '3r ./insertcotent' fstab 把insertcotent文件中的内容读入fstab的第3行
161 cat -n fstab | sed '3r ./insertcotent' 显示行数,把insertcotent文件中的内容读入fstab的第3行
162
167 cat -n fstab | sed '$r ./insertcotent' 显示行数,在fstab的最后一行中插入insertcotent文件中的内容
168 sed 's/sbin/###/g' passwd 把passwd中的sbin替换成###
169 sed 's/sbin/*******/g' passwd 把passwd中的sbin替换成*******
171 sed '3,8s/sbin/*******/g' passwd 把passwd中的第3-8行sbin替换成*******
172 cat -n passwd | sed '3,8s/sbin/*******/g' 显示行数,把passwd中的第3-8行sbin替换成*******
173 cat -n passwd | sed 's/\//\\\\/g' 显示行数,把/改成\\
174 sed '/adm/,/halt/s/sbin/*****/g' passwd 把passwd中的从adm行到halt行中的sbin替换成*******
175 cat -n passwd | sed '/adm/,/halt/s/sbin/*****/g' 显示行数,把passwd中的从adm行到halt行中的sbin替换成*******
176 cat -n passwd | sed 's/\///g' 显示行数,删掉/ 。或,把/改成无
177 awk -F: '{print $1}' passwd 以:分段,显示每一行的第一段
178 cat passwd 显示passwd
179 awk -F: '{print $1,$2,$3}' passwd 以:分段,显示每一行的第1,2,3段
180 awk -F: '{print $0}' passwd 以:分段,显示每一行
181
182 vi awkdemo 打开文件awkdemo
183 awk -F, '{print $1}' awkdemo 以,分段,显示awkdemo每一行的第一段
184 cat awkdemo 显示文件awkdemo
185 awk -F, '{print NF}' awkdemo 以,分段,显示awkdemo每一行有几段
186 awk -F: '{print NF}' passwd 以:分段,显示passwd每一行有几段
187 awk -F: '{print $1, $2}' passwd 以:分段,显示每一行的第1,2段
188 awk -F: '{print $1, $2}' OFS='&' passwd 以:分段,显示每一行的第1,2段。并把每行的分段之间用&连接
189 awk -F: '{print $1, $2}' OFS='------' passwd 以:分段,显示每一行的第1,2段。并把每行的分段之间用--------连接
190 awk -F: '{print $1, $2}' OFS='\t' passwd 以:分段,显示每一行的第1,2段。并把每行的分段之间用空格符隔开
191 awk '{print}' passwd 显示passwd
192 awk '{print $1}' passwd 没有分段,显示每一行
193 vi awkdemo 打开文件awkdemo
194 awk '{print $1}' awkdemo 显示每一行
195 awk '/mysql/{print}' passwd 显示mysql行
196 awk '/mysql/{print $0}' passwd $0代表整行,显示mysql行
199 awk -F: '/mail/,/mysql/{print}' passwd 输出passwd从mail行到mysql行
200 cat -n passwd | awk -F: '/mail/,/mysql/{print}' 显示行数,输出passwd从mail行到mysql行
201 awk -F: '$1~/mail/{print $1}' passwd 以:分段,输出mail行的第一段
202 history