Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在gnu sed脚本中,在Win XP cmd解释器下使用行延续_Windows_Batch File_Sed_Continuation - Fatal编程技术网

Windows 在gnu sed脚本中,在Win XP cmd解释器下使用行延续

Windows 在gnu sed脚本中,在Win XP cmd解释器下使用行延续,windows,batch-file,sed,continuation,Windows,Batch File,Sed,Continuation,GNU sed版本4.0.7-为Win32编译-来自 要在一个大txt文件的顶部预加一行,以下单行批处理脚本可以正常工作: gsed -i "1i longheader1 longheader2 longheader3 longheader4 ..." testfile.txt 但是,为了清楚起见,将文本字符串拆分成几行,对批处理脚本进行格式化会很有用,可能是这样: gsed -i "1i ^ longheader1 ^ longheader2 ^ longheader3 ^ lo

GNU sed版本4.0.7-为Win32编译-来自

要在一个大txt文件的顶部预加一行,以下单行批处理脚本可以正常工作:

gsed -i "1i longheader1  longheader2  longheader3 longheader4 ..." testfile.txt
但是,为了清楚起见,将文本字符串拆分成几行,对批处理脚本进行格式化会很有用,可能是这样:

gsed -i "1i ^
 longheader1 ^
 longheader2 ^
 longheader3 ^
 longheader4" ^
 testfile.txt
很遗憾,执行上述批处理脚本失败,原因是:

“longheader1”未被识别为内部或外部命令, 可操作的程序或批处理文件

用\替换行连续字符^1也失败

关于“行延续脚本”失败的原因以及可能的简明解决方法,有什么建议吗

__菲利普

@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION 复制/y c:threadfile.txt u:\testfile.txt>NUL 设定指令= 对于%%t英寸 1i 朗海德尔1 朗海德尔2 朗海德尔3 长头鸟4 ... 设置SED指令=!SED指令!%%T sed-i%sed指令%u:\testfile.txt 键入u:\testf* 复制/y c:threadfile.txt u:\testfile.txt>NUL 设定指令= 对于%%t英寸 1i 朗海德尔1 朗海德尔2 朗海德尔3 长头鸟4 ... 设置SED指令=!SED指令!%%~T sed-i%sed指令%u:\testfile.txt 键入u:\testf* 后藤:EOF 这里有一个方法-和一个主题的变化

请注意,在原始指令中,有时有1个空格,有时有两个空格。第一个任意插入一个,第二个+引号中包含的数字。可能有变体-如果字符串不包含空格,则不需要引号


请注意,这将对某些字符表现出一定的敏感性,尤其是%和^。

感谢Magoo迅速提供了完善的替代解决方案。请详细说明我尝试的简单化“行延续”脚本为何/在何处中断,而原始的“一行”运行良好?干杯,简而言之,你不能用^来打断带引号的字符串cmd’有着悠久而复杂的历史。总的来说,在不断增加的弹壳数量内增加了新的设施,以便新引入的方法不会打破该领域为克服过去的缺点而采用的体操在混合中的时间较晚,因此它很可能在字符串解析后最后处理。我相信它只是为了跨行中断过长的命令——即使在那里,人们也发现了实现方法的创新用途。