[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]请问用sed命令如何批处量删除文件每行的倒数第n个字符

本帖最后由 gannh 于 2014-5-31 15:08 编辑

如题,现在有多个文本文件,请问用sed命令如何批量删除文件每行的倒数第n个字符?n可以为1,2,3,4.。。。。?不知道这边有没有大师可以帮忙?谢谢

本帖最后由 terse 于 2013-4-27 12:47 编辑

回复 1# gannh
注意 里面 N 是数字
  1. sed -r "s/(.*).((.){N})$/\1\2/" filename
复制代码

TOP

刚才试了一下,只能删除的是正数第四个字符,而不是倒数第四个字符,不知道是怎么回事呢,谢谢指教

TOP

回复 3# gannh
我这里是可以的
要不这样试
  1. @echo off
  2. :设置序列
  3. set n=6
  4. :设置字数
  5. set m=1
  6. set /a n-=m
  7. sed -r "s/(.*)((.){%m%})((.){%n%})$/\1\4/" filename
  8. pause
复制代码

TOP

还是不行呢,按你最新的代码,复制到bat运行后没反应呢
我的是文件内容是有中文的,是不是这个原因呢?
但我新建了一个txt文件,输入
87654321
12345678
上面的代码运行后,没变的,这就奇怪了

TOP

我的问题是:有N个txt文件,每个txt文件里有N行,长短不一,现在我想批量删除里面的每行倒数第n个字符,如:
12345
acdbedrfert
tx谢谢指教txtxt

现在我想删除倒数第3个字符后变成
1245
acdbedrfrt
tx谢谢指教txxt

问题就是这样,希望有大师提供指导,谢谢

TOP

回复 6# gannh
不知你的版本多少
我这里测试是成功的
将你的测试字符 copy 到 a.txt 和b.txt
结果是:

TOP

好的,我再试试看,谢谢指点

TOP

回复 8# gannh


试试4.2.2这个版本的sed
http://www.bathome.net/thread-16975-1-1.html

TOP

我的是这个版本啊

TOP

我现在都搞不清楚 sed 中向后引用的括号要不要加 \ 了...
  1. @sed "s/.\(.\{4\}\)$/\1/g" a.txt>b.txt
复制代码

TOP

回复 11# CrLf


    要加。使用 -r 之后可以不加。
1

评分人数

TOP

返回列表