Shell脚本实践整理

准备(创建测试文件):

在这里插入图片描述

1. 按行读取文件内容,且过滤包含“#”字符的行

代码:

#!/bin/bash

FILE_NAME="test"

cat $FILE_NAME | while read LINE
do
	#过滤配置文件中包含"#"的行
	if [[ ${LINE} =~ "#" ]];then continue;fi
	
	echo ${LINE}
done

结果:

hrx@@@:~/test/shell$ ./test.sh 
一行一列 一行二列 一行三列
二行一列 二行二列 二行三列
三行一列 三行二列 三行三列

解释:
1、使用cat命令获取文件test的内容,然后一行一行的把数据读取到LINE变量,直到读完为止。
2、使用=~符号判断LINE中是否包含“#”,包含则跳过

2. 获取文件的MD5并按空格拆分出MD5值

代码:

#!/bin/bash

FILE_NAME="test"

echo $(md5sum ${FILE_NAME})
echo $(md5sum ${FILE_NAME} |cut -d" " -f1)

结果:

hrx@@@:~/test/shell$ ./test.sh 
e662a3938d12efcf8d168fea7ff96cc8 test
e662a3938d12efcf8d168fea7ff96cc8

解释:
1、使用md5sum命令查询文件所返回的格式为【MD5值 文件名】,中间以空格符分隔。
2、使用cut命令拆分出第一段字符(-d:自定义分隔符,这里定义空格,也可定义双引号之类的,不过要转义)(-f:定义要哪一段,f后面的数字表示段号,从1开始)

3. 查询文件中包含某字段的一行,并写入新的文件

代码:

#!/bin/bash

FILE_1="test"
FILE_2="test2"

#获取包含某字符串的一行
str=$(grep -w "二行二列" ${FILE_1})

#将字符串写入文件test2中
echo ${str} >> ${FILE_2}

结果:

hrx@@@:~/test/shell$ ./test.sh 
二行一列 二行二列 二行三列
hrx@@@:~/test/shell$ cat test2
二行一列 二行二列 二行三列

解释:
1、使用grep查询文件中包含“二行二列”字符的一行(-w:为完全匹配)
2、将字符串写入文件test2中(>:为写入文件,会清空之前内容)(>>:为追加内容到文件)

发布了62 篇原创文章 · 获赞 106 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/lang523493505/article/details/102954394