繁体   English   中英

如何在 unix 中将多行合并为单行?

[英]how to combine multiple lines into single line in unix?

我的文本文件是这样的: -

<first_load_time>29-09-2020</first_load_time>
<sql_id>qqkbwi76786</sql_id>

<first_load_time>01-01-2020</first_load_time>
<sql_id>abcdef12345</sql_id>

所需的 output:-

以下格式的文本文件

<first_load_time>29-09-2020</first_load_time><sql_id>qqkbwi76786</sql_id
<first_load_time>01-01-2020</first_load_time><sql_id>abcdef12345</sql_id>

笔记:-

  1. 输入文本文件的前两个块之间有一个空行。 空行分隔文本文件中的文本块,在 output 文件中,我需要将每个文本块放在一行中。

给定您在某个文件(例如 input.txt)中的输入,您可以在 sed 中找到任何空行(在正则表达式中^$表示开始后紧跟行尾)并删除它们(使用d ),然后发送到 output 文件说 putput 。文本:

sed '/^$/ d' < input.txt > output.txt

您可以尝试以下 awk 命令:

awk '$1 ~ "<first" {a=$0;next;} $1 ~ "<sql"  {print a $0}' file.txt

此命令将检查输入行中的模式“<first”。 如果模式匹配,那么它将将该行存储在一个变量中并移至下一行。 如果下一行具有模式“<sql”,那么它将打印存储在变量 a 中的行和以 <sql 开头的当前行。

由于这个命令是匹配模式,它会自动忽略空行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM