unix - sed 命令合并具有相同关键字的两行或多行

标签 unix sed

我有一个如下所示的输入 file.txt

ABC
Job: Farmer
DEFG
Job: Plumber
Job: Teacher
GHIJ

我想将包含 Job 的所有行合并为一行,如下所示

ABC
Job: Farmer,Plumber,Teacher
DEFG
GHIJ

我尝试了以下方法,但没有帮助

sed '$!N;/作业:/s/\n/,/file.txt

最佳答案

使用 GNU sed

$ sed -Ez ':a;s/(Job: )(.*)\1([^\n]*)\n/\1\3,\2/;ta' input_file
ABC
Job: Plumber,Teacher,Farmer
DEFG
GHIJ

关于unix - sed 命令合并具有相同关键字的两行或多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75591776/

相关文章:

regex - 仅当字符串存在于特定列中时才打印行

linux - 如何使用 sed 提取子字符串

bash - 查找所有包含文本 "example.html"的文件并替换为 "example.php"仅当文件名中没有空格时才有效

c - (在C 中模拟UNIX SHELL)如何在for 循环中实现多个管道?

linux - 从动态生成的输出中获取特定字符串的索引

c - 没有正确读取标准输入

linux - 如何使用 grep 只获取一行的一部分

bash - Sed 替换为使用捕获组作为参数的 bash 命令的输出

c - 无论 fork() 多少次,父进程仅从其子进程接收到 SIGCHLD 一两次

linux - 在 Unix 中以当前日期为后缀批量重命名文件