awk-grep-sed-head-tail7种命令实践

awk-grep-sed-head-tail7种命令实践

1、sequence==seq序列
[[email protected] ~]# seq 6
1
2
3
4
5
6
[[email protected] ~]# seq 2 6
2
3
4
5
6
[[email protected] ~]# seq 1 2 6
1
3
5

列子:如何从100的序列,取出20到30的数字
[[email protected] ~]# seq 100 >test.txt
[[email protected] ~]# cat test.txt
[[email protected] ~]# head -30 test.txt |tail -11
20
21
22
23
24
25
26
27
28
29
30

2、sed stream editor 流编辑器,实现对文件的增删改替换查看

sed -n '20,30’p test.txt
-n代表取消默认输出
'20,30’代表要输出的行数内容
p:代表打印

[[email protected] ~]# sed -n '20,30’p test.txt
20
21
22
23
24
25
26
27
28
29
30
取出一行数据
[[email protected] ~]# sed -n '20’p test.txt
20

(1)sed替换文本中字符串名称
sed “s#oldgirl#xiaoming#g” oldboy.txt 注意此处只是改输出内容
sed -i “s#oldgirl#xiaoming#g” oldboy.txt 此处可以改文本里面的内容
g与s联合使用时,表示对当前行全局匹配替换
S常说的查找并替换,用一个字符串替换成另一个
-i:代表修改内容

[[email protected] ~]# echo ‘oldboy oldgirl’ >oldboy.txt
[[email protected] ~]# cat oldboy.txt
oldboy oldgirl
[[email protected] ~]# sed “s#oldgirl#xiaoming#g” oldboy.txt
oldboy xiaoming

[[email protected] ~]# mkdir -p /oldboy/test
[[email protected] ~]# cd /oldboy/
[[email protected] oldboy]# ls
ett oldboy oldboyson oldboy_son oldgirl test
[[email protected] oldboy]# echo “oldboy” >test/del.sh
[[email protected] oldboy]# echo “oldboy” >test.sh
[[email protected] oldboy]# echo “oldboy” >.sh
[[email protected] oldboy]# tree.
|-- ett
| -- test |-- oldboy |-- oldboy_son |-- oldboyson |-- oldgirl |-- test |– del.sh
`-- test.sh

[[email protected] oldboy]# find /oldboy/ -type f -name ‘.sh’|xargs cat
oldboy
oldboy
oldboy
[[email protected] oldboy]# **find /oldboy/ -type f -name '
.sh’|xargs**
/oldboy/test.sh /oldboy/.sh /oldboy/test/del.sh
[[email protected] oldboy]# find /oldboy/ -type f -name ‘*.sh’|xargs sed -i 's#oldboy#oldgirl#g’
[[email protected] oldboy]# find /oldboy/ -type f -name ‘*.sh’|xargs cat
oldgirl
oldgirl
oldgirl

[[email protected] oldboy]# sed -i ‘s#oldgirl#old#g’ find /oldboy/ -type f -name "*.sh"
[[email protected] oldboy]# find /oldboy/ -type f -name ‘*.sh’|xargs cat
old
old
old

3、awk
NR:代表行号
&&:代表并且的意思 且俩边成立
linux中一个等号代表赋值;俩个等号才代表等于号

[[email protected] ~]# awk ‘NR>19&&NR<31’ test.txt
20
21
22
23
24
25
26
27
28
29
30

4、grep
-A:除了显示匹配的一行之外,并显示改行之后的num行
[[email protected] ~]# grep 20 -A 10 test.txt
20
21
22
23
24
25
26
27
28
29
30

-C:除了显示匹配的一行之外,并显示该行前后各num行
[[email protected] ~]# grep 25 -C 5 test.txt
20
21
22
23
24
25
26
27
28
29
30

-B:除了显示匹配的一行之外,并显示该行之前的num行
[[email protected] ~]# grep 30 -B 10 test.txt
20
21
22
23
24
25
26
27
28
29
30

awk-grep-sed-head-tail7种命令实践
awk-grep-sed-head-tail7种命令实践