如何用awk,sed,grep实现查找指定位置并替换或删除所在行?

BSAITT01_FSDDSASD
MAFFSA04_SADSASDFA
SAMITT01_323333333
MAFFSA03H12222EDD
SAFFSA02_T
BLMITT02_SA
SAMITTU8YTRE

23 rows selected.

1.需要把第5,6位的为TT的行删除
2.需要把第5,6位的SA替换为TT,其他不变

第1个回答  2019-12-16

sed -ri 's/(.{4})TT(.*)/\1sa\2/'  -e  's/(.{4})SA(.*)/\1TT\2/' test.txt

一起交流学习

第2个回答  2019-12-13
这是电脑专业问题,只有高手才能告诉你。
第3个回答  2019-12-13
你选择程序选择项右击有功能
第4个回答  2019-12-13

不动原文件,将复合要求的结果放到result中:

sed -e '/^....\(TT\)/d' -e 's/\(^....\)\(SA\)/\1TT/'  原文件名 > result

直接在原文件中改:

sed -i -e '/^....\(TT\)/d' -e 's/\(^....\)\(SA\)/\1TT/'  原文件名

追问

如果中间还有空白行的话结果会留很多空白行,请问如何一次删掉呢

追答

sed -e '/^....\(TT\)/d' -e 's/\(^....\)\(SA\)/\1TT/' -e '/^$/d' 原文件 >result
即在要处理的文件名前面再加上"-e '/^$/d'"
试试看可以不,不行的话追问

追问

还是不行 我把文本重新发在了问题上 麻烦帮看下

追答

看你追问的截图,你说的问题是最后还有一行空白吗?

按照你的文本,我这边使用命令处理后,生成的结果文件内容为:

是不是这个结果不符合你的预期?

追问

符合的,但是我在hp-uninx下执行后就变这样了 最后一行也没输出出来。

23 rows selected.

追答

我试着用awk写一下,你那边试试看,sed这个你那边为啥这样我也想不明白

你先试试 awk '{if(length != 0) print $0}' 文件名 看看这条命令执行后除了空行是否所有行都出来了,关键看一下最后一行。如果最后一行没出来,那我就没辙了

追问

抱歉 我刚知道刚才的问题了 原因是最后一行后面没有换行符
另外想追问下 我想把空白行及后面的所有行都删除掉应该怎么写呢 谢谢

追答

贴个图举个例子

本回答被提问者和网友采纳
第5个回答  2019-12-13
sed查询某个时间段的内容主要参数:-e:执行命令行中...求助:想用sed或awk来实现文件中的字符串替换 06-...grep查找&sed修改&awk分析处理grep查找sed修

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网