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

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

评分人数

TOP

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

TOP

回复 21# hfxiang


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

TOP

回复 20# yyz219

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

评分人数

TOP

回复 15# aloha20200628


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

TOP

回复 18# aloha20200628


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

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

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

回复 15# aloha20200628


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

TOP

本帖最后由 aloha20200628 于 2024-1-26 12:52 编辑


给两个版本参考,用楼主提供的样本文件测试均予通过。
一。用sed.exe(从本站第三方工具可自由下载),简明利索,且不必过问文件编码问题,也许sed.exe默认继承源文件编码。
  1. @echo off
  2. for /f %%n in ('sed -n "$=" 1.txt') do set/a "n=%%n-4"
  3. sed "%n% r 2.txt" 1.txt>1.new.txt
复制代码
二。纯P的另一套思路。第3行获取1.txt总行数,第4行切出1.txt前段,第5行切出1.txt后段,第6行拼接各段合成结果。
  1. @echo off &setlocal enabledelayedexpansion
  2. chcp 65001>nul
  3. set "n=1" & for /f %%n in ('find /v /c "" ^<1.txt') do set/a "m=%%n-4"
  4. (for /f "delims=" %%s in (1.txt) do if !n! leq !m! (set/a "n+=1" & echo,%%s))>1.1
  5. more +!m! 1.txt>1.2
  6. copy /y 1.1+2.txt+1.2 1.new.txt>nul
  7. del /q 1.1 1.2 & chcp 936>nul & endlocal&exit/b
复制代码
1

评分人数

TOP

回复 13# qixiaobin0715


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

TOP

本帖最后由 qixiaobin0715 于 2024-1-26 10:34 编辑

回复 1# yyz219
纯P试试:
  1. @echo off
  2. chcp 65001 >nul
  3. set /p x=Please enter the specified line number:
  4. set /a m=x-1
  5. (for /f "delims=" %%i in (1.txt) do (
  6.     if defined Line4 echo,!Line4!
  7.     for /l %%j in (%m%,-1,1) do (
  8.         set /a n=%%j+1
  9.         set Line!n!=!Line%%j!
  10.     )
  11.     set line1=%%i
  12. )
  13. if defined Line4 (
  14.     type 2.txt
  15.     for /l %%i in (%x%,-1,1) do echo,!Line%%i!
  16. ))>3.txt
  17. pause
复制代码
1

评分人数

TOP

回复 7# ShowCode


    是我大意,没有看清楚  非常感谢
我是小白,希望老师多多帮助

TOP

回复 10# ShowCode


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

TOP

回复 9# yyz219


1.bat
1.txt
2.txt
全部保存为UTF-8编码
  1. @echo off
  2. chcp 65001 >nul
  3. gawk -vN=4 "NR>FNR;NR==FNR{if(NR>N){print a[NR%%N]}{a[NR%%N]=$0;NN=NR}}END{for(i=NN-N;++i<=NN;)if(i%%N in a)print a[i%%N]}" 1.txt 2.txt>3.txt
复制代码
1

评分人数

    • yyz219: 完美解决了,再次感谢技术 + 1
测试代码之前请做好备份

TOP

返回列表