首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CSV文件输入到Bash中的变量中以进行解析

将CSV文件输入到Bash中的变量中以进行解析
EN

Stack Overflow用户
提问于 2020-06-11 05:28:28
回答 1查看 35关注 0票数 1

对于CSV文件中的每一行,我想提取一个字段,并使用Bash在该行中重新定位它。行是一个URL,我使用/作为分隔符。

这是起始文件(start.csv):

代码语言:javascript
复制
https://docs.website.com/12-3/articles/guide-1/article-1.html
https://docs.website.com/12-2/articles/guide-2/article-5.html
https://docs.website.com/12-1/articles/guide-3/article-6.html

为便于以后参考,该网址为https://{url}/{version}/irrelevant/{guide}/irrelevant.html

所需的输出为(end.csv):

代码语言:javascript
复制
url,name,tag,version,guide,views
https://docs.website.com/12-3/articles/guide-1/article-1.html,,,12-3,guide-1,0
https://docs.website.com/12-2/articles/guide-2/article-5.html,,,12-2,guide-2,0
https://docs.website.com/12-1/articles/guide-3/article-6.html,,,12-1,guide-3,0

我尝试了许多不同的版本,但都失败了:

代码语言:javascript
复制
file="start.csv"
var="$(<<<"${file}" cut -d'/' -f4)"

sed -e "s|$|,$var,,,,0|g" < start.csv > end.csv

但是,这会成功地生成一个包含以下版本的列:

代码语言:javascript
复制
cut -d'/' -f4 < start.csv

在某种程度上,我的逻辑存在严重缺陷。有谁能帮我找出我的问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 05:34:03

使用awk会更简单

代码语言:javascript
复制
awk -F/ -v OFS=, '{print $0, "", "", $4, $6, 0}' file

代码语言:javascript
复制
https://docs.website.com/12-3/articles/guide-1/article-1.html,,,12-3,guide-1,0
https://docs.website.com/12-2/articles/guide-2/article-5.html,,,12-2,guide-2,0
https://docs.website.com/12-1/articles/guide-3/article-6.html,,,12-1,guide-3,0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62313426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档