已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
上个月关门了。
社区上个月审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question
我有一个文本文件,看起来像这样
729590
fbe2d8c9-5b33-4758-8668-7e9f9f70085b
326e9ee4-da56-44de-ad40-e42f14dbf6c4
459590
d43bcb29-7c91-411c-ad5a-7450a927d2df
865431
f719b802-a7bd-4b83-aa02-08e3d3f351ff
8fcb6aed-9c87-4c0d-af94-9200830c4e27
c56378e8-fb14-4cd4-b816-020b328fb50a
345621
9fd92086-e681-4458-9631-cfa02d349fee
16cf1a8d-3fd8-49a3-b9fd-445a1413d280
07f31e67-07a4-4088-8cdd-9354d26cbd70
d6af1a35-563e-4e51-8533-0ec0a39d26fa
e7ae32e8-3658-400b-ab95-5107bedb6f34
使用这个文件,我想得到一个输出在另一个csv文件的格式如下所示
729590,fbe2d8c9-5b33-4758-8668-7e9f9f70085b,some_text
729590,326e9ee4-da56-44de-ad40-e42f14dbf6c4,some_text
459590,d43bcb29-7c91-411c-ad5a-7450a927d2df,some_text
865431,f719b802-a7bd-4b83-aa02-08e3d3f351ff,some_text
865431,8fcb6aed-9c87-4c0d-af94-9200830c4e27,some_text
865431,c56378e8-fb14-4cd4-b816-020b328fb50a,some_text
345621,9fd92086-e681-4458-9631-cfa02d349fee,some_text
345621,16cf1a8d-3fd8-49a3-b9fd-445a1413d280,some_text
345621,07f31e67-07a4-4088-8cdd-9354d26cbd70,some_text
345621,d6af1a35-563e-4e51-8533-0ec0a39d26fa,some_text
345621,e7ae32e8-3658-400b-ab95-5107bedb6f34,some_text
我已经写了代码,在while循环的帮助下完成它,但想知道这是他们的任何其他简单的方法,可能是使用awk命令。
1条答案
按热度按时间wwtsj6pe1#
假设您的“分组密钥”是一个6位数(
729590
,459590
,865431
,345621
),以下应该可以工作:说明:
print
函数时,BEGIN{OFS=","}
将把,
定义为分隔符(例如,print "a", "b"
将显示a,b
)/^[0-9]{6}/ {i=$0; next}
匹配6位数,并将其存储在变量i
中。然后它转到下一行(next
){print i, $0, "some_text"}
:对于每隔一行,它打印变量i
,当前行($0
,在您的情况下是uuid
)和some_text
。每个字段将由,
分隔(由OFS
定义)感谢@艾德莫顿在评论部分的建议:)