我正在运行以下 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
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我正在运行 AIX 5.3
基本上,我要么希望它停止添加 extra \n
,要么找到一种删除它的方法。
Sté*_*las 13
您应该认为自己很幸运,因为 AIXsed
添加了缺少的换行符。
不以换行符结尾的非空文件不是文本文件(至少根据文本文件的 POSIX 定义),因为文本文件旨在包含行,而行是(不太- long) 由换行符终止的字符序列,因此像sed
它这样的文本实用程序的行为是未指定的,并且在实践中因实现而异。
某些sed
实现会在最后一行之后忽略那些虚假字符。
AFAIK,xml
文件应该是文本文件,所以这意味着sed
只需为您修复它。
如果您确实需要该文件不以换行符结尾,那么您可以使用perl
或 其他可以处理非文本数据的工具。
perl -pe 's|<LIST_G_STATEMENT>|$&\n|g'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11589 次 |
最近记录: |