0

次の文字列を含むサンプル ファイルがあります。'if' と 'endif' の間のすべての文字列を改行を削除して 1 行にまとめる必要があります (\n) サンプルを以下に示します。sed または bash スクリプトを使用して、この出力が必要でした。誰でも私を助けることができますか??

--サンプル文字列

if
ABC
BCD
DEF
endif
if 
123
456
789
endif

-- 必要な出力

ifABCBCDDEFendif

if123456789endif
4

3 に答える 3

1

ファイルにif-endif ブロックのみが含まれていると仮定します。

awk '{ printf("%s", $0) } /^endif$/ { printf("\n") }'

変更されてはならないテキストが介在する場合は、もう少し複雑なアプローチが必要です。

awk '/^if$/    { InIf = 1 } 
     /^endif$/ { InIf = 0 } 
               { printf("%s", $0) } 
     !InIf     { printf("\n") }'
于 2013-01-16T11:59:37.200 に答える
0

ワンライナーでこれを行います

ファイルが file.txt の場合

指示

cat file.txt | tr -d "\n" | sed 's@endif@endif\n@g'
于 2014-03-20T11:04:59.820 に答える
0

上記の文字列を含むファイル tt1 があるとします。

cat tt1 | sed  's/\n//g' | sed  's/endif/endif\n/g'
于 2013-01-16T12:10:36.977 に答える