0

(GNU sed バージョン 4.0.7 - Win32 用にコンパイル - http://unxutils.sourceforge.netから)

大きな txt ファイルの先頭に 1 行追加するには、次の 1 行のバッチ スクリプトが正常に機能します。

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

ただし、わかりやすくするために、リテラル文字列を複数の行に分割してバッチ スクリプトをフォーマットすると便利です。

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

残念ながら、上記のバッチ スクリプトの実行は次のエラーで失敗します。

'longheader1' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

行継続文字の置き換え^\失敗します。

「行継続」スクリプトが失敗する理由、および潜在的な簡潔な回避策に関する提案はありますか?

__フィリップ

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 つある場合と 2 つある場合があることに注意してください。1 つ目は任意に 1 を挿入し、2 つ目は + 引用符内の数字を挿入します。バリエーションがある可能性があります。「文字列」にスペースが含まれていない場合、引用符は必要ありません

これは、一部の文字 (特に%^.

于 2015-01-18T21:20:51.130 に答える