shell整理(39)====shell改变文本练习

简介:

题目环境:

**seq 20 > file,在1、3、5、9、14、18的上一行添加20个“=”。

file文件如下:


====================

1

2

====================

3

4

====================

5

6

7

8

====================

9

10

11

12

13

====================

14

15

16

17

====================

18

19

20


***需求1

在每一个“==================”之间插入序号,例如第一个等于号“============1==========”


shell 代码如下

[root@localhost shell]# cat aa.sh 

#!/bin/bash


b=1

for i in `cat file`

do

if [ "$i" = "====================" ];then

echo $i | sed 's/====================/=========='$b'==========/g' 

b=$(($b+1))

else

echo "$i"

fi

done



执行结果如下

==========1==========

1

2

==========2==========

3

4

==========3==========

5

6

7

8

==========4==========

9

10

11

12

13

==========5==========

14

15

16

17

==========6==========

18

19

20


思路:用for循环来遍历这个文件,如果说文件中存在字符串为“========”号就替换成“=======数字=======”

,其中数字代表是第几个“=======...”,所以我们需要一个递增的变量来记录“=====....”的个数。

***需求2

将序号1-2之间下面的数字追加到1.txt,2-3之间追加到2.txt,依次类推。


shell脚本如下

[root@localhost shell]# cat aa1.sh 

#!/bin/bash


rm -rf *.txt

b=1

for i in `cat file`

do

if [ "$i" = ==========$b========== ];then

b=$(($b+1))

continue

else

echo $i >> $(($b-1)).txt


fi

done


执行结果如下

[root@localhost shell]# ls

1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  aa1.sh  aa.sh  file  file1

[root@localhost shell]# cat 1.txt 

1

2

[root@localhost shell]# cat 2.txt 

3

4

[root@localhost shell]# 


*****需求2错误总结

(1)if判断那=========$b=======   可以用单引号或者不用引号,不能用双引号,我也说不清楚是为什么,写脚本开高亮就好了

“=”  是比较字符串, -eq 一般用于逻辑运算,比较大小。

(2)一定要把b=$(($b+1))写在continue上面,如果写在下面,跳过“========$b=====”以后就直接比较下一个$i

后面的b=$(($b+1))就不看了,所以b在循环中不会被赋上值。



本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1972748,如需转载请自行联系原作者

相关文章
|
6月前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
152 1
|
6月前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
153 0
|
6月前
|
Linux C语言 C++
Linux Shell_cut命令(按列提取文本字符)
Linux Shell_cut命令(按列提取文本字符)
76 0
|
6月前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
84 1
|
6月前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
199 0
|
6月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
75 4
|
6月前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
189 0
|
6月前
|
弹性计算 Shell Linux
ecs服务器shell常用脚本练习(六)
【4月更文挑战第4天】shell代码训练(六)
138 0
|
6月前
|
弹性计算 Shell 应用服务中间件
ecs服务器shell常用脚本练习(四)
【4月更文挑战第4天】shell代码训练(四)
150 0
|
Shell
SHELL练习
1.你需要打印一个给定的数字的反序,如输入10572,输出27501,如果没有输入数据,应该抛出错误和使用脚本说明。
71 0