使用 CentOS 5.6 重新格式化文本文件,将所有文本放在一行上

使用 CentOS 5.6 重新格式化文本文件,将所有文本放在一行上

我有一个 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/更改thisthat)。如果您希望使用制表符而不是空格,请执行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'

相关内容