gpt4 book ai didi

Linux SED - 保留空间 - 所有行的一个值

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:40 25 4
gpt4 key购买 nike

我想使用 sed 转换文件。源文件具有以下格式(“deviceId”是占位符):

CREATE DATABASE "deviceId";
column value=88i 1445137680000000000
column value=68i 1445137620000000000
column value=80i 1445137560000000000
column value=39i 1445137500000000000

转换后,格式如下:

USE DATABASE "db";
series,device=deviceId column=88i 1445137680000000000
series,device=deviceId column=68i 1445137620000000000
series,device=deviceId column=80i 1445137560000000000
series,device=deviceId column=39i 1445137500000000000

但我不明白,如何在每一行中获取 deviceId。我当前的 sed.txt 包含以下代码:

s/^\(CREATE DATABASE ".*";\)$/USE DATABASE "db";/g
s/\(.*\) .*=\(.*\) \(.*\)/series,device= \1=\2 \3/g

并生成以下输出:

USE DATABASE "db";
series,device= column=88i 1445137680000000000·
series,device= column=68i 1445137620000000000
series,device= column=80i 1445137560000000000
series,device= column=39i 1445137500000000000

有人可以解释我如何在每行中获取 deviceId 吗?我已经看到使用 Hold-Space/Flow-Work 是可行的。我试过了,但我不知道这应该如何工作。

谢谢!

最佳答案

您正在尝试使用错误的工具。我希望,虽然你可以想出一些神奇的 rune 来强制 sed 产生你想要的输出,但为了健壮性、可移植性、简单性、效率以及软件的几乎所有其他理想属性,标准的 UNIX 工具可用于任何其他比单行上的简单替换是 awk:

$ awk -F'["=]' '
NR==1{dev=$(NF-1); $0 = "USE DATABASE \"db\""}
NR>1 {$0 = "series,device=" dev " column=" $2}
1' file
USE DATABASE "db"
series,device=deviceId column=88i 1445137680000000000
series,device=deviceId column=68i 1445137620000000000
series,device=deviceId column=80i 1445137560000000000
series,device=deviceId column=39i 1445137500000000000

关于Linux SED - 保留空间 - 所有行的一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com