【发布时间】:2016-08-15 04:36:48
【问题描述】:
我有一个包含以下文本的文件:
subject:asdfghj
subject:qwertym
subject:bigger1
subject:sage911
subject:mothers
object:cfvvmkme
object:rjo4j2f2
object:e4r234dd
object:uft5ed8f
object:rf33dfd1
我希望使用 awk 或 sed 实现以下结果(因为 oneliner 将是一个奖励![Perl oneliner 也可以接受]):
subject:asdfghj,object:cfvvmkme
subject:qwertym,object:rjo4j2f2
subject:bigger1,object:e4r234dd
subject:sage911,object:uft5ed8f
subject:mothers,object:rf33dfd1
我希望将匹配“主题”和“对象”的每一行按照列出的顺序组合在一起,并用逗号分隔。我可以看一个用 awk、sed 或 perl 完成的例子吗? (如果可能的话,最好是单线?)
我已经尝试过使用 awk 来执行此操作,但我仍在学习我应该添加:
awk '{if ($0 ~ /subject/) pat1=$1; if ($0 ~ /object/) pat2=$2} {print $0,pat2}'
但是并没有按照我的想法去做!所以我知道我的语法错误。如果我看到一个对我学习有很大帮助的例子。
【问题讨论】:
-
在这里发布需求并等待有人为您完成工作是不可接受的。如果您有一些无法使用的代码,请在此处发布,我们将帮助您完成它。如果您无法为自己写任何东西,那么您应该考虑花钱请人为您写,就像您在任何其他学科中所做的那样
-
我很抱歉,但我一直在尝试使用 awk 和 sed 的变体,但这是不“知道”如何构造命令语法以产生接近结果的东西的问题。例如我做了 awk '{if ($0 ~ /subject/) pat1=$1; if ($0 ~ /object/) pat2=$2} {print $0,pat2}' 但这并没有产生我想要的东西。所以我想我根本不懂语法,所以我的问题。不过还是谢谢你的评论。
-
当您不“知道如何”修理汽车、建造阁楼扩建或修理漏水的供水系统时,您会怎么做?您是否要求免费为您写诗歌或文学作品?
-
我只是想看一些例子,本着“授人以渔”的精神。不过还是谢谢你的回复。
-
perl -nE 'chomp; /^s/ ? push @s, $_ : push @o, $_; END {for (0..$#s) { say "$s[$_],$o[$_]"} }' file