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


    谢谢
我是小白,希望老师多多帮助

TOP

回复 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


能不能修改一下?谢谢
我是小白,希望老师多多帮助

TOP

回复 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

评分人数

    • yyz219: 如果要在第4行(不是倒数)插入,又应该怎么 ...技术 + 1

TOP

回复 18# aloha20200628


    谢谢  问题解决了  再次感谢
我是小白,希望老师多多帮助

TOP

回复 15# aloha20200628


    如果要在第4行(不是倒数)插入,又应该怎么样?谢谢
我是小白,希望老师多多帮助

TOP

回复 20# yyz219

如果文件2.txt最后有一行空行
  1. sed "4r2.txt" 1.txt>3.txt
复制代码
1

评分人数

TOP

回复 21# hfxiang


    我试一试先 谢谢
我是小白,希望老师多多帮助

TOP

成功了 再次感谢
我是小白,希望老师多多帮助

TOP

回复 23# yyz219

如果文件 2.txt 最后无空行
  1. sed -e "4r2.txt" -e "5s/^/\n/" 1.txt>3.txt
复制代码
1

评分人数

TOP

回复 24# hfxiang


    谢谢
我是小白,希望老师多多帮助

TOP


可请 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

评分人数

TOP

回复 26# aloha20200628


    这个方便
我是小白,希望老师多多帮助

TOP

本帖最后由 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
我是小白,希望老师多多帮助

TOP

本帖最后由 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

评分人数

TOP

很好的代码
我是小白,希望老师多多帮助

TOP

返回列表