Windows 在gnu sed脚本中,在Win XP cmd解释器下使用行延续
GNU sed版本4.0.7-为Win32编译-来自 要在一个大txt文件的顶部预加一行,以下单行批处理脚本可以正常工作: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
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’有着悠久而复杂的历史。总的来说,在不断增加的弹壳数量内增加了新的设施,以便新引入的方法不会打破该领域为克服过去的缺点而采用的体操在混合中的时间较晚,因此它很可能在字符串解析后最后处理。我相信它只是为了跨行中断过长的命令——即使在那里,人们也发现了实现方法的创新用途。