准备(创建测试文件):
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中(>:为写入文件,会清空之前内容)(>>:为追加内容到文件)