原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2300.html https://www.myzhenai.com/thread-17920-1-1.html
关键词: Linux删除指定字符窜后边的字符窜 Shell删除指定字符窜后边的字符窜 sed删除指定字符窜后边的字符窜 sed删除右边的字符窜 sed删除左边的字符窜
对于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 ---------------------------------------------------------------------
I P 地 址: 3.145.54.210
区 域 位 置: 美国
系 统 信 息:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com.cn/post/2300.html
没有评论