gpt4 book ai didi

awk - 使用 AWK 修改输出

转载 作者:行者123 更新时间:2023-12-04 09:38:59 25 4
gpt4 key购买 nike

有一个如下所示的数据集,用 (:) 冒号分隔:

##L1
Advc:start:TA_Wk;TA_Wk:rstb:ver:trstb.techind_C3_D[0].RESETH:LK

##L2
ner:ted:Unused:C1500:ver:sync3rmsfd0nt_t;tape_out:SOCK0

我正在使用列号,并使用 AWK 将一些字符串附加到它。
我试图忽略遇到 # 并最后附加它们的评论。
#!/bin/bash
awk -F: '/^#/ {c=$0; sub(/#+/,"", c); next}
{print $1, "-f" " "$4, "-t" " "$6, "-d" " ""{"$3"}", "-t" " ""{"$7"}","-", "\"" c "\""}' s1

输出:
Advc -f rstb -t trstb.techind_C3_D[0].RESETH -d {TA_Wk;TA_Wk} -t {LK} - "L1"
-f -t -c {} -c {} - "L1"
ner -f C1500 -t sync3rmsfd0nt_t;tape_out -d {Unused} -t {SOCK0} - "L2"

期望输出:
Advc -f rstb -t trstb.techind_C3_D[0].RESETH -d {TA_Wk;TA_Wk} -t {LK} - "L1"
ner -f C1500 -t sync3rmsfd0nt_t;tape_out -d {Unused} -t {SOCK0} - "L2"

1.在第 3 列和第 7 列中,如果像“未使用”、“未指定”这样的词,那么它不应该打印它应该忽略的特定列以及附加到它的字符串,如上所示在所需的输出中。

2.如何去除空行。

如上所示,如何在我的代码中修复上述两个条件?

最佳答案

OP 的尝试修复:在这里修复了 OP 的尝试。您需要跳过空行以正确打印输出,您可以使用简单的 if 条件 + 我在您的尝试中进行了细微的更改,例如更改 subgsub在移除 #部分,设置 :BEGIN部分 + 给变量定义明确的名称,以便代替 c我把它改成了 val为了更好的理解。

awk 'BEGIN{FS=":"} /^$/{next} /^#/ {val=$0; gsub(/#/,"", val); next}
{print $1, "-f" " "$4, "-t" " "$6, \
($3!="Unused"?"-d" " ""{"$3"}":""),\
($7!="Unspecified"?"-t" " ""{"$7"}":""),"-", "\"" val "\""
}' s1="\"" Input_file



我试图解决这个问题:使用 GNU 中显示的样本编写和测试 awk .
awk '
BEGIN{
FS=":"
}
/^$/{
next
}
/^#/{
val=$0
gsub(/#/,"", val)
next
}
{
($3=$3!="Unused"?"-d" " ""{"$3"}":"")
($7=$7!="Unspecified"?"-t" " ""{"$7"}":"")
print $1, "-f" " "$4, "-t" " "$6, \
$3,\
$7,"-", "\"" val "\""
}' s1="\"" Input_file

关于awk - 使用 AWK 修改输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62414072/

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