BSAITT01_FSDDSASD
MAFFSA04_SADSASDFA
SAMITT01_323333333
MAFFSA03H12222EDD
SAFFSA02_T
BLMITT02_SA
SAMITTU8YTRE
23 rows selected.
1.需要把第5,6位的为TT的行删除
2.需要把第5,6位的SA替换为TT,其他不变
sed -ri 's/(.{4})TT(.*)/\1sa\2/' -e 's/(.{4})SA(.*)/\1TT\2/' test.txt
一起交流学习
不动原文件,将复合要求的结果放到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}' 文件名 看看这条命令执行后除了空行是否所有行都出来了,关键看一下最后一行。如果最后一行没出来,那我就没辙了
追问抱歉 我刚知道刚才的问题了 原因是最后一行后面没有换行符
另外想追问下 我想把空白行及后面的所有行都删除掉应该怎么写呢 谢谢
贴个图举个例子
本回答被提问者和网友采纳