gpt4 book ai didi

bash - 在 bash 中读取文件时忽略第一行/列标题

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

我正在尝试从 bash 中的源 txt 文件中读取,我想忽略第一行,即列。在搜索之后,一个解决方案是在我的 while 循环中使用“sed”,如下所示:

#!/bin/bash
filename="source2.txt"
#fp=`sed 1d source2.txt`
#echo $fp
sed 1d $filename | while IFS=, read -r accountId ProductId Product
do
echo "Account $accountId has productId $ProductId and product $Product"
done < $filename

但 sed 命令似乎不起作用。继续提供标题中的所有内容。我尝试向 1d 和 $filename 添加双引号,但不起作用。

这是我的示例输入文件内容

AccountId ProductId Product
300100051205280,300100051161910,content1
300100051199355,300100051161876,content2

我正在使用 Editra 编辑器创建我的 bash 脚本。任何人都可以帮我解决为什么这不起作用。提前感谢您的帮助。

最佳答案

在复合命令中使用额外的read。这比使用单独的进程跳过第一行更有效,并且可以防止 while 循环在子 shell 中运行(如果您尝试在循环主体中设置任何变量,这可能很重要)。

{
read
while IFS=, read -r accountId ProductId Product
do
echo "Account $accountId has productId $ProductId and product $Product"
done
} < $filename

--

您最初尝试的问题是您为 while 循环提供了两个输入源(通过来自 sed 的管道,以及通过输入缩减)。删除输入重定向可以解决这个问题。

sed 1d $filename | while IFS=, read -r accountId ProductId Product
do
echo "Account $accountId has productId $ProductId and product $Product"
done

关于bash - 在 bash 中读取文件时忽略第一行/列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911179/

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