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

[文本处理] 【已解决】求bat脚本在1.txt的倒数第4行前面插入2.txt里面的内容。谢谢

[复制链接]
 楼主| 发表于 2024-1-26 12:46:50 | 显示全部楼层
回复 15# aloha20200628


    谢谢
 楼主| 发表于 2024-1-26 17:55:18 | 显示全部楼层
回复 15# aloha20200628

1.txt:
1111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111

2.txt:
22222222222
22222222222
用sed.exe以后,得到的1.new.txt:
1111111111111111111
1111111111111111111
1111111111111111111
22222222222
222222222221111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111
=============================
但是希望得到的是:
1111111111111111111
1111111111111111111
1111111111111111111
22222222222
22222222222
1111111111111111111
1111111111111111111
1111111111111111111
1111111111111111111


能不能修改一下?谢谢
发表于 2024-1-26 18:34:40 | 显示全部楼层
回复 17# yyz219

2.txt文件没有空行结尾所致。
代码加一句即可。

  1. @echo off
  2. for /f %%n in ('sed -n "$=" 1.txt') do set/a "n=%%n-4"
  3. echo,>>2.txt & sed "%n% r 2.txt" 1.txt>1.new.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 如果要在第4行(不是倒数)插入,又应该怎么 ...

查看全部评分

 楼主| 发表于 2024-1-26 18:37:21 | 显示全部楼层
回复 18# aloha20200628


    谢谢  问题解决了  再次感谢
 楼主| 发表于 2024-1-26 22:19:11 | 显示全部楼层
回复 15# aloha20200628


    如果要在第4行(不是倒数)插入,又应该怎么样?谢谢
发表于 2024-1-27 11:50:29 | 显示全部楼层
回复 20# yyz219

如果文件2.txt最后有一行空行

  1. sed "4r2.txt" 1.txt>3.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-1-27 11:51:45 | 显示全部楼层
回复 21# hfxiang


    我试一试先 谢谢
 楼主| 发表于 2024-1-27 11:52:45 | 显示全部楼层
成功了 再次感谢
发表于 2024-1-27 13:01:14 | 显示全部楼层
回复 23# yyz219

如果文件 2.txt 最后无空行

  1. sed -e "4r2.txt" -e "5s/^/\n/" 1.txt>3.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-1-27 13:20:45 | 显示全部楼层
回复 24# hfxiang


    谢谢
发表于 2024-1-27 15:53:18 | 显示全部楼层

可请 findstr 露一手,先检测 2.txt 是否存在末尾空行,再选择sed方案而行。
假设要在第4行(不是倒数)插入...

  1. (findstr /v $ 2.txt>nul && (sed -e "5 s/^/\n/" -e "4 r 2.txt" 1.txt)||sed "4 r 2.txt" 1.txt)>1.new.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-1-28 07:43:08 | 显示全部楼层
回复 26# aloha20200628


    这个方便
 楼主| 发表于 2024-1-28 07:46:07 | 显示全部楼层
本帖最后由 yyz219 于 2024-1-28 09:08 编辑

回复 26# aloha20200628


    再弄一个:倒数)插入的

出来了:
::【在 “1.txt” 的倒数第4行 插入 “2.txt” 里面的内容】【自动判断2.txt 是否存在末尾空行】
@echo off
(findstr /v $ 2.txt>nul && (goto :wu)||goto :you)
:wu
for /f %%n in ('sed -n "$=" 1.txt') do set/a "n=%%n-4"
echo,>>2.txt & sed "%n% r 2.txt" 1.txt>3.txt
exit

:you
for /f %%n in ('sed.exe -n "$=" 1.txt') do set/a "n=%%n-4"
sed.exe "%n% r 2.txt" 1.txt>3.txt
exit
发表于 2024-1-28 11:14:32 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-1-28 11:27 编辑

回复 28# yyz219

goto方案适于大量复杂的作业调度,用于本例显得沉重了,不如以下代码简明利索...仅供参考。

  1. @echo off
  2. for /f %%n in ('sed -n "$=" 1.txt') do (set/a "n=%%n-4, m=n+1")
  3. (findstr /v $ 2.txt>nul && (sed -e "%m% s/^/\n/" -e "%n% r 2.txt" 1.txt)||sed "%n% r 2.txt" 1.txt)>1.new.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 很好

查看全部评分

 楼主| 发表于 2024-1-28 12:13:25 | 显示全部楼层
很好的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 05:43 , Processed in 0.022392 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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