gpt4 book ai didi

bash - awk脚本从txt文件中读取数据

转载 作者:行者123 更新时间:2023-11-29 09:50:08 25 4
gpt4 key购买 nike

我正在尝试创建一个 awk 脚本来从 txt 文件中读取数据并创建一个输出脚本。是否可以使用 awk 创建输出?

while IFS=',' read -r a b c; do echo "source "$a" and target "$b" and line "$c"" ; done < test.txt

测试.txt

"x","y","8"
"x","6"
"y","7"

输出:

source "x" and target "y" and line "8"
source "x" and target "6" and line
source "y" and target "7" and line

预期输出:

"source x and target y and line 8"
"source x and line 6"
"target y and line 7"

最佳答案

我发现很难从提供的输入和输出中清楚地辨别需求。但是,如果我们稍微调整一下您的输入(与 Corentin 的建议略有不同,我们可以提供一个工作 awk 脚本来提供您想要的输出。

让我们从一个假设开始:

输入格式如下:

<source>,<target>,<line>

现在我们可以编写这个 awk 脚本了:

awk -F, '
BEGIN {
split( "source target line" , value , " " )
}

{
output=""
for ( field = 1 ; field <= length(value) ; field++ )
{
if ( $field ) {
output = output ( output ? " and " : "" ) value[ field ] " " $field
}
}
print "echo " output
}' << EOF
"x","y","8"
"x",,"6"
,"y","7"
EOF

老实说,上面的代码有点失误。具体来说,我没有处理输入或输出中的双引号。我认为如果我们谈论引号,解决方案的可读性会降低。从技术上讲,如果输入中的引号是为了保护逗号(就像 CSV 的情况一样),我会考虑用支持 csv 的 python(或其他语言)编写这个程序。

下面是上面程序的输出:

echo source "x" and target "y" and line "8"
echo source "x" and line "6"
echo target "y" and line "7"

关于bash - awk脚本从txt文件中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908108/

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