awk - 如果当前行末尾包含模式,则合并下一行

标签 awk sed tr

我有一个非常大的文本文件。如果当前行末尾有单词 OR,我想将下一行合并到当前行。 例如。就像下面几行一样

somerandomstring OR
someotherrandomstring

上面两行应该变成

somerandomstring OR someotherrandomstring

只有那些行应该改变。其余线路必须保持原样。提前致谢。

请允许我进一步扩展这个问题。 我还想看看下一行是否以 OR 开头并且 OR 不在当前行的末尾,那么如何将上述情况和本例一起实现?

最佳答案

使用 GNU sed:

sed '/ OR$/{N;s/\n/ /}' file

在行尾搜索空白,然后在OR ($) 处搜索,如果找到则将下一行 (N) 读取到模式空间并将模式空间中的换行符(使用 s///)替换为一个空格。

如果您想“就地”编辑文件,请使用 sed 的选项 -i

关于awk - 如果当前行末尾包含模式,则合并下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469463/

相关文章:

linux - 在用双引号替换定界符时处理数据

bash - 在 bash 中添加两个变量

linux - sed: sed: -e 表达式 #1, char 63: 未终止的 `s' 命令

linux - sed 用特殊字符替换数字,除了一行中的最后一个字符串

linux - Grep 一行然后打印 awk 直到某个子串

bash - 格式化 du -sh 输出

linux - 使用 sed 删除特定空格的正则表达式

linux - 将用户输入转换为大写

linux - 从文件的第二列中删除特殊字符

linux - Netflow 列操作 bash