Linux中常用命令示例:grep、head、tail、awk、sed

1.创建测试环境

mkdir /data
cat >/data/test.txt<

案例1:查看含有某些字符的行

方法一:

查看带有oldbo字符的

[root@NSW1 data]# grep "oldbo" test.txt
oldboy

查看除oldboy字符以外的其他内容

[root@NSW1 data]# grep -v "oldboy" test.txt
test
liyao
[root@NSW1 data]#

方法二:

head 默认显示文件的前10行

[root@m01 data]# head test.txt 
test
liyao
oldboy
[root@m01 data]# head -n2 test.txt 
test
liyao
[root@m01 data]# 

tail 默认显示末尾10行

[root@NSW1 data]# tail test.txt 
test
liyao
oldboy
[root@NSW1 data]# tail -n2 test.txt 
liyao
oldboy
[root@NSW1 data]# 

方法三:

awk '/lodboy/' test.txt == grep "oldboy" test.txt
awk '!/lodboy/' test.txt # 在前面加上个!号表示取反
[root@m01 data]# awk '/oldbo/' test.txt 
oldboy
[root@m01 data]# awk '!/oldbo/' test.txt 
test
liyao

方法四:

sed ‘/oldboy/p’ test.txt #查找并显示
sed ‘/oldboy/d’ test.txt #显示除//中的其他内容
[root@m01 data]# sed '/oldbo/p' test.txt 
test
liyao
oldboy
oldboy
[root@m01 data]# sed -n '/oldbo/p' test.txt 
oldboy
[root@m01 data]# sed '/oldbo/d' test.txt 
test
liyao

小结:

  1. grep 过滤 *****

  2. head tail *****

3.sed awk 了解

##3.11 只查看ett.txt文件(共100行)内第20到第30行的内容 (显示某几行)

###方法1-sed

###方法2-head + tail

###方法3-awk

seq + 数字 (生成序列)

[root@NSW1 ~]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@NSW1 ~]# 
[root@NSW1 ~]# seq 100 >/oldboy/ett.txt

#sed 默认输出 sed命令会把文件的内容 默认都显示出来

[root@NSW1 ~]# sed '20p' /oldboy/ett.txt 
1
2
3
4
5
6
...
100

sed -n 参数表示取消默认输出

[root@NSW1 ~]# sed -n '20p' /oldboy/ett.txt 
20
[root@NSW1 ~]# 

显示从第20行开始到第30行结束

[root@NSW1 ~]# sed -n '20,30p' /oldboy/ett.txt 
20
21
22
23
24
25
26
27
28
29
30
[root@NSW1 ~]# 
[root@NSW1 ~]# head -30 /oldboy/ett.txt | tail -11
20
21
22
23
24
25
26
27
28
29
30
[root@NSW1 ~]# 
[root@NSW1 ~]# awk 'NR==20,NR==30' /oldboy/ett.txt 
20
21
22
23
24
25
26
27
28
29
30
[root@NSW1 ~]# 

小结:

  1. 取出文件中的某一行,或者连续几行

  2. sed,head+tail

3.awk

grep也可以

[root@NSW1 ~]# grep -A10 "20" /oldboy/ett.txt 
20
21
22
23
24
25
26
27
28
29
30
[root@NSW1 ~]#

查找并替换

把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中,文件包含oldboy的字符串全部替换为oldgirl(—后面讲)

mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/de1.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.txt

find 不加参数的情况下是显示当前目录下以及子目录下所有内容

#第一个里程碑-找出你要的文件

[root@NSW1 oldboy]# find /oldboy/ -type f (-f 普通文件)(注意提前写好路径)
/oldboy/t.sh
/oldboy/ett.txt
/oldboy/test.sh
/oldboy/test/de1.sh
/oldboy/oldboy.txt
/oldboy/alex.txt
[root@NSW1 oldboy]# find /oldboy/ -type f -name "*.sh" (f 普通文件 -name 文件名 以.sh结尾的)
/oldboy/t.sh
/oldboy/test.sh
/oldboy/test/de1.sh
[root@NSW1 oldboy]# 

#oldboy替换为oldgirl 处理一个文件

[root@NSW1 oldboy]# cat /oldboy/t.sh 
oldboy
[root@NSW1 oldboy]# #sed 's#找谁#替换为什么#g' /oldboy/t.sh
[root@NSW1 oldboy]# #替换
[root@NSW1 oldboy]# sed 's#oldboy#oldgirl#g' /oldboy/t.sh
oldgirl
[root@NSW1 oldboy]# cat /oldboy/t.sh 
oldboy
[root@NSW1 oldboy]# #sed修改文件的内容
[root@NSW1 oldboy]# sed -i 's#oldboy#oldgirl#g' /oldboy/t.sh
[root@NSW1 oldboy]# cat /oldboy/t.sh 
oldgirl
[root@NSW1 oldboy]# 
#把find命令找到的文件交给sed命令处理

[root@NSW1 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'
oldgirl
oldgirl
oldgirl
[root@NSW1 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs sed 's#oldboy#oldgirl#g' -i
[root@NSW1 oldboy]# 
[root@NSW1 oldboy]# find /oldboy/ -type f -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl
[root@NSW1 oldboy]# 

小结:

1.find 与 |xargs

2.ls -l rm sed

3.sed名进行替换 修改文件的内容
Linux中常用命令示例:grep、head、tail、awk、sed_第1张图片

Linux中常用命令示例:grep、head、tail、awk、sed
希望大家踊跃评论,一起讨论,如有错误可指出!

文章内容如有侵权请私信!

谢谢大家!!!

你可能感兴趣的:(Linux基础命令)