Я запускаю следующие 2 sed
команды. Первый добавляет символы новой строки, где я хочу их, второй также добавляет символы новой строки, где я хочу их, НО также добавляет дополнительный в конце файла, где раньше его не было.
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
всех трех файлов дает следующий результат.
Statement_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
Statement_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
Statement_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
По сути, я либо хочу, чтобы он прекратил добавлять дополнительные \n
, либо нашел способ их удаления.
\n
с правой стороны не является портативным.
perl
или другой инструмент, который может иметь дело с двоичными данными.
\<LF>
это традиционный и POSIX способ добавить символ LF. \n
обычно заменяет n
символ во всем, кроме GNU sed
.
s|...|&\n|
так же хорошо?