找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22343|回复: 11

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

[复制链接]
发表于 2013-4-27 11:33:44 | 显示全部楼层 |阅读模式
本帖最后由 gannh 于 2014-5-31 15:08 编辑

如题,现在有多个文本文件,请问用sed命令如何批量删除文件每行的倒数第n个字符?n可以为1,2,3,4.。。。。?不知道这边有没有大师可以帮忙?谢谢
发表于 2013-4-27 12:45:28 | 显示全部楼层
本帖最后由 terse 于 2013-4-27 12:47 编辑

回复 1# gannh
注意 里面 N 是数字
  1. sed -r "s/(.*).((.){N})$/\1\2/" filename
复制代码
 楼主| 发表于 2013-4-27 13:14:56 | 显示全部楼层
刚才试了一下,只能删除的是正数第四个字符,而不是倒数第四个字符,不知道是怎么回事呢,谢谢指教
发表于 2013-4-27 13:27:59 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2013-4-27 13:40:10 | 显示全部楼层
还是不行呢,按你最新的代码,复制到bat运行后没反应呢
我的是文件内容是有中文的,是不是这个原因呢?
但我新建了一个txt文件,输入
87654321
12345678
上面的代码运行后,没变的,这就奇怪了
 楼主| 发表于 2013-4-27 13:44:35 | 显示全部楼层
我的问题是:有N个txt文件,每个txt文件里有N行,长短不一,现在我想批量删除里面的每行倒数第n个字符,如:
12345
acdbedrfert
tx谢谢指教txtxt

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

问题就是这样,希望有大师提供指导,谢谢
发表于 2013-4-27 14:07:31 | 显示全部楼层
回复 6# gannh
不知你的版本多少
我这里测试是成功的
将你的测试字符 copy 到 a.txt 和b.txt
结果是:
 楼主| 发表于 2013-4-27 14:15:54 | 显示全部楼层
好的,我再试试看,谢谢指点
发表于 2013-4-27 17:37:45 | 显示全部楼层
回复 8# gannh


试试4.2.2这个版本的sed
http://www.bathome.net/thread-16975-1-1.html
 楼主| 发表于 2013-4-28 16:54:40 | 显示全部楼层
我的是这个版本啊
发表于 2013-4-28 18:32:13 | 显示全部楼层
我现在都搞不清楚 sed 中向后引用的括号要不要加 \ 了...
  1. @sed "s/.\(.\{4\}\)$/\1/g" a.txt>b.txt
复制代码
发表于 2013-4-28 18:56:17 | 显示全部楼层
回复 11# CrLf


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

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 soga

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:49 , Processed in 0.020228 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表