我有一个 210 行的 HTML 块,我将其存储在 HTML 中以用于调试目的。
正如您所期望的,HTML 已进行相应的格式化,因此存储在带有空格和制表符的文件中。是否可以将此文件转换为将所有 HTML 放在一行上?我使用的是 CentOS 5.6。
例如,有没有一种简单的方法可以改变这一点:
<div id="crmpicco">
<div class="ayrshireminis">
... content in here ...
</div>
</div>
对此:
<div id="crmpicco"><div class="ayrshireminis"></div></div>
答案1
您可能会发现tr
实用很有帮助。cat INPUT_FILE | tr -d '\n\r' > OUTPUT_FILE
似乎可以完成这项工作。
-d
删除字符,而不是翻译
man tr
有关 moretr
可以做什么的更多详细信息,请参阅。
答案2
您可以使用许多工具来执行此操作。这是 perl 中的解决方案。
在命令行上:
perl -p -e 's/^ *//; s/ *$//; chomp' < FILE > OUTFILE
将其中替换FILE
为文件名和OUTFILE
要写入输出的新文件。不要为两者使用相同的文件名。
它的作用:perl -p
在它获取的输入的每一行上运行一个 perl 脚本,并将结果写入输出。您正在使用<
和运算符将输入和输出设置>
为您想要的文件。脚本本身遵循该-e
选项并进行三个替换。
s/^ *//
:将行 ( ) 开头的任意数量的空格(空格、星号)替换^
为空(命令s/this/that/
更改this
为that
)。如果您希望使用制表符而不是空格,请执行s/^[ \t]*//
以下操作来替换任意数量的空格或制表符 ( \t
)。
s/ *$//
: 相同,但位于行尾 ( $
)。
chomp
:perl-speak 用于删除行尾的换行符。
答案3
awk '{ORS=""; print $0}' textfile
<div id="crmpicco"> <div class="ayrshireminis">... content in here ... </div></div>
此外,正如已经指出的,该tr
实用程序对此非常有用。删除换行符和使用该实用程序一次全部制表符/空格tr
,执行以下操作:
# cat textfile |tr -d '\n\r" "'
<divid=crmpicco><divclass=ayrshireminis>...contentinhere...</div></div>
笔记:如果您使用制表符而不是空格,请执行以下操作
cat textfile |tr -d '\n\r\t'