Я виконую наступні 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всіх 3-х файлів дає наступний результат.
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|так само добре використовуватись?