0

(GNU sed 版本 4.0.7 - 为 Win32 编译 - 来自http://unxutils.sourceforge.net

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

gsed -i "1i longheader1  longheader2  longheader3 longheader4 ..." testfile.txt

但是,为了清楚起见,将文本字符串拆分为多行来格式化批处理脚本会很有用,可能是这样:

gsed -i "1i ^
 longheader1 ^
 longheader2 ^
 longheader3 ^
 longheader4" ^
 testfile.txt

不幸的是,执行上述批处理脚本失败:

'longheader1' 不是内部或外部命令、可运行程序或批处理文件。

用换行符替换^\失败。

关于“行继续”脚本为何失败以及潜在的简洁解决方法的任何建议?

__philippe

4

1 回答 1

0
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
COPY /y c:threadfile.txt u:\testfile.txt >NUL
SET "sedinstruction="
FOR %%t IN (
1i 
longheader1
longheader2
longheader3 
longheader4 
...
) DO SET "sedinstruction=!sedinstruction! %%t"

sed -i "%sedinstruction%" u:\testfile.txt
TYPE u:\testf*

COPY /y c:threadfile.txt u:\testfile.txt >NUL
SET "sedinstruction="
FOR %%t IN (
"1i"
"longheader1"
" longheader2"
" longheader3 "
"longheader4"
"..."
) DO SET "sedinstruction=!sedinstruction! %%~t"

sed -i "%sedinstruction%" u:\testfile.txt
TYPE u:\testf*

GOTO :EOF

这是一种方式 - 以及主题的变体。

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

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

于 2015-01-18T21:20:51.130 回答