Shell 自动删除指定字符窜后边的字符窜

2016年09月3日

原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2300.html https://www.myzhenai.com/thread-17920-1-1.html
关键词: Linux删除指定字符窜后边的字符窜 Shell删除指定字符窜后边的字符窜 sed删除指定字符窜后边的字符窜 sed删除右边的字符窜 sed删除左边的字符窜
对于shell编程的过程中我们都会遇到一个问题,如何替换或删除掉文件中指定字符窜后边或前边的一段字符, 如果使用正则的话是方便,但正则也没有办法做到针对不同的字符窜, 更何况是不懂正则的朋友,像我这样.
所以我换了个思路, 先取到需要替换或删除的字符窜,放到一个变量中,然后再用这个变量做为替换或删除的关键词去操作. 实现方法也很简单.
因为演示的文本里有敏感关键词,所以我只能是截图来演示了. 但代码我会详细解释.

Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜


Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜


Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b") //这是获取整行内容,免得有分隔符或其他字符让读取的文本变成错行
sed -i '/[ltem_[0-9]]/d' database.ini
sed -i '/ItemCount/d' database.ini
sed -i '/TaskIndex/d' database.ini
sed -i '/Filename/d' database.ini
sed -i '/Path/d' database.ini
sed -i '/Percent/d' database.ini
sed -i '/Referer/d' database.ini
sed -i '/Rename/d' database.ini //以上这些都是替换掉包含指定关键词的整行.
sed -i '/^$/d' database.ini
sed -i '/^\s*$/d' database.ini //这两行是删除所有空白符或换行符或空格
sed -i 's/Link=//g' database.ini //删除所有指定字符
if  grep -q "|" database.ini ; then echo ""; else sed -i 's/$/&|/g' database.ini; fi //判断所有字符窜里是不是包含|这字符窜,如果有就不添加,如果没有就自动在每行后边添加这个字符,用作下边代码的分隔符.
for i in $(< database.ini) //进入循环
do
h=`echo $i|awk -F "?" '{ print $2 }'|awk -F "|" '{ print $1 }'` //取出指定字符窜右边的字符放到h变量中, 如果要取左边的字符,在上边的代码中将|添加在行首,然后将?和|这两个搜索关键字符互调,将$1和$2参数互换就可以了.
sed -i "s/?$h|//g" database.ini //删除?这个字符和变量里的字符窜和|这个字符.
done
IFS=$SAVEIFS

 
完整代码
 

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
sed -i '/[ltem_[0-9]]/d' database.ini
sed -i '/ItemCount/d' database.ini
sed -i '/TaskIndex/d' database.ini
sed -i '/Filename/d' database.ini
sed -i '/Path/d' database.ini
sed -i '/Percent/d' database.ini
sed -i '/Referer/d' database.ini
sed -i '/Rename/d' database.ini
sed -i '/^$/d' database.ini
sed -i '/^\s*$/d' database.ini
sed -i 's/Link=//g' database.ini
if  grep -q "|" database.ini ; then echo ""; else sed -i 's/$/&|/g' database.ini; fi
for i in $(< database.ini)
do
h=`echo $i|awk -F "?" '{ print $2 }'|awk -F "|" '{ print $1 }'`
sed -i "s/?$h|//g" database.ini
done
IFS=$SAVEIFS

   


sicnature ---------------------------------------------------------------------
Your current IP address is: 52.54.111.228
Your IP address location: 美国弗吉尼亚阿什本
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://www.myzhenai.com.cn/post/2300.html

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注