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
小结:
grep 过滤 *****
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 ~]#
小结:
取出文件中的某一行,或者连续几行
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
Linux中常用命令示例:grep、head、tail、awk、sed
希望大家踊跃评论,一起讨论,如有错误可指出!
文章内容如有侵权请私信!
谢谢大家!!!