sedが改行を追加するのをやめる方法

sedが改行を追加するのをやめる方法

次の2つのコマンドを実行していますsed。 1つ目は私が欲しいところに改行を追加し、2番目は私が望むところに改行を追加しますが、以前に改行がなかったファイルの末尾に改行を追加します。

sed -e 's|\<LIST_G_STATEMENT>|&\
|g' ${XMLDIR}/statement_tmp_1.xml > ${XMLDIR}/statement_tmp_2.xml

sed -e 's|\</LIST_G_STATEMENT>|&\
|g' ${XMLDIR}/statement_tmp_2.xml > ${XMLDIR}/statement_tmp_3.xml

od -cこれを3つのファイルすべてに使用すると、次のような出力が生成されます。

comments_tmp_1.xml(\nファイルの末尾にはありません)

1314700    T   A   T   E   M   E   N   T   >   <   /   L   I   S   T   _
1314720    G   _   S   T   A   T   E   M   E   N   T   >   <   /   G   _
1314740    S   E   T   U   P   >   <   /   L   I   S   T   _   G   _   S
1314760    E   T   U   P   >   <   /   A   R   X   S   G   P   O   >
1314777

comments_tmp_2.xml(\nファイルの末尾にはありません)

1314700    S   T   A   T   E   M   E   N   T   >   <   /   L   I   S   T
1314720    _   G   _   S   T   A   T   E   M   E   N   T   >   <   /   G
1314740    _   S   E   T   U   P   >   <   /   L   I   S   T   _   G   _
1314760    S   E   T   U   P   >   <   /   A   R   X   S   G   P   O   >
1315000

comments_tmp_3.xml(\nファイルの終わり - どこから来たのですか?)

1314700    S   T   A   T   E   M   E   N   T   >   <   /   L   I   S   T
1314720    _   G   _   S   T   A   T   E   M   E   N   T   >  \n   <   /
1314740    G   _   S   E   T   U   P   >   <   /   L   I   S   T   _   G
1314760    _   S   E   T   U   P   >   <   /   A   R   X   S   G   P   O
1315000    >  \n
1315002

私はAIX 5.3を使用しています。

基本的に extra の追加を中断\nまたは削除する方法を探したいと思います。

ベストアンサー1

幸運だと思わなければなりません。 AIXは、sed欠落している改行文字を追加します。

改行で終わらない空でないファイルは(少なくともテキストファイルのPOSIX定義による)テキストファイルではありません。改行で終わる文字なので、テキストは実用的です。プログラムの動作(例:sed上記)は指定されておらず、実際には実装によって異なります。

一部のsed実装では、最後の行の後の偽の文字を無視します。

AFAIK、xmlファイルはテキストファイルである必要があるため、sed変更されたばかりです。

ファイルが改行で終わらないようにする必要がある場合は、perlテキスト以外のデータを処理できる他のツールを使用できます。

perl -pe 's|<LIST_G_STATEMENT>|$&\n|g'

おすすめ記事