因此,当我打开一个日志文件时,它就是一条长行。记事本一词包装它,但它确实是一行。当我打开一个Linux终端,并输入“cat log-file”时,它会格式化文件并进行换行。有没有办法获取此日志文件并将其输出到新文件中cat如何显示它?
对不起,如果我模糊不清,我是bash的新手,我还在努力学习。
您是否可以使用“sed”命令在其中的某处添加\ n来打破该行?
我正在尝试在html文件中显示此文件。所以我想用一个标签替换任何\ n。所以我正在做sed's/\n/<br>/' <log-file >html-file
但它没有用。我该怎么做?
答案 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}}