在bash中读取文件时忽略第一行/列标题
发布时间:2020-12-15 22:43:28 所属栏目:安全 来源:网络整理
导读:我试图从bash中的源txt文件中读取,我想忽略第一行是列.在搜索一个解决方案后,使用“sed”和我的while循环如下: #!/bin/bashfilename="source2.txt"#fp=`sed 1d source2.txt`#echo $fpsed 1d $filename | while IFS=,read -r accountId ProductId Productdo
我试图从bash中的源txt文件中读取,我想忽略第一行是列.在搜索一个解决方案后,使用“sed”和我的while循环如下:
#!/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命令似乎不起作用.保持所有内容与header.I尝试添加双引号到1d和$filename但不起作用. 这是我的示例输入文件内容 AccountId ProductId Product 300100051205280,300100051161910,content1 300100051199355,300100051161876,content2 我正在使用Editra编辑器来创建我的bash脚本.任何人都可以帮助我为什么这不起作用.谢谢你提前帮助. 解决方法
在复合命令中使用额外的读取.这比使用单独的进程跳过第一行更有效,并防止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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |