如何在bash中打印文件并将其显示为“cat”将显示

时间:2014-05-17 20:56:28

标签: bash sed

因此,当我打开一个日志文件时,它就是一条长行。记事本一词包装它,但它确实是一行。当我打开一个Linux终端,并输入“cat log-file”时,它会格式化文件并进行换行。有没有办法获取此日志文件并将其输出到新文件中cat如何显示它?

对不起,如果我模糊不清,我是bash的新手,我还在努力学习。

您是否可以使用“sed”命令在其中的某处添加\ n来打破该行?

我正在尝试在html文件中显示此文件。所以我想用一个标签替换任何\ n。所以我正在做sed's/\n/<br>/' <log-file >html-file但它没有用。我该怎么做?

1 个答案:

答案 0 :(得分:1)

\n替换所有<br>个实例:

awk -v ORS='<br>' 1 <log-file >html-file
  • awk逐行读取输入(感谢默认输入记录分隔符RS,为\n
  • ORS='<br>'输出记录分隔符ORS设置为<br>
  • 1只是{print}的简写,只是打印以ORS结尾的每个输入行。

至于为什么你的命令不起作用:

  • sed's/\n/<br>/'sed及其程序's/...'之间缺少空格,这会导致字符串不是有效的命令名。< / LI>
  • 即使您更正了,该命令仍然无法按预期工作,因为sed逐行读取,并且每行都是读取终止\n;因此,如上所述,您无法替换输入中的\n,并且\n将再次附加到输出中 - 实际上,您的命令将是无操作。

更新:@ gniourf_gniourf指出,如果可以而不是替换,那么直截了当sed解决方案也是如此 \n个实例,<br>在 之前插入 - 这应该没问题,因为输出是 HTML

sed 's/$/<br>/' <log-file >html-file
  • $匹配每个输入行的 end (不捕获任何内容),并用<br>“替换”它,即有效地将<br>附加到\n输出前的行\n - 已终止。

如果仍然需要摆脱tr个实例,您可以直接管道sed 's/$/<br>/' <log-file | tr -d $'\n' >html-file

{{1}}