对于CSV文件中的每一行,我想提取一个字段,并使用Bash在该行中重新定位它。行是一个URL,我使用/作为分隔符。
这是起始文件(start.csv):
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):
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我尝试了许多不同的版本,但都失败了:
file="start.csv"
var="$(<<<"${file}" cut -d'/' -f4)"
sed -e "s|$|,$var,,,,0|g" < start.csv > end.csv但是,这会成功地生成一个包含以下版本的列:
cut -d'/' -f4 < start.csv在某种程度上,我的逻辑存在严重缺陷。有谁能帮我找出我的问题吗?谢谢。
发布于 2020-06-11 05:34:03
使用awk会更简单
awk -F/ -v OFS=, '{print $0, "", "", $4, $6, 0}' file
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,0https://stackoverflow.com/questions/62313426
复制相似问题