首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Sed、Awk等将第一列中的每一行数据复制到最后一列中的html超链接中。

使用Sed、Awk等将第一列中的每一行数据复制到最后一列中的html超链接中。
EN

Stack Overflow用户
提问于 2022-08-29 01:51:55
回答 5查看 118关注 0票数 2

我要做的是从第一列中的每一行复制第一次数据,并将其放到创建的最后一列的超链接中

这是我每天得到的文件的一个例子。让我们调用这个文件input.csv,我想将它转换为output.csv

每天的行数各不相同。

INPUT.CSV

代码语言:javascript
运行
复制
number|name|age|gender
B24|mike|22|male
B65|john|45|male
B74|jane|29|female

这就是我想要的样子:

OUTPUT.CSV

代码语言:javascript
运行
复制
number|name|age|gender|website
B24|mike|22|male|<a href=https://www.abcdef.com/query=B24>B24</a>
B65|john|45|male|<a href=https://www.abcdef.com/query=B65>B65</a>
B74|jane|29|female|<a href=https://www.abcdef.com/query=B74>B74</a>

为了使它更整洁,我把一些变量放在了适当的位置。

test.sh

代码语言:javascript
运行
复制
#!/bin/bash

NUMBER=(data from the "number" column of each corresponding row in the input.csv file)
URL=https://www.abcdef.com/search?query=$NUMBER

awk -F"|" 'BEGIN { OFS = "|" } {$5="<a href='$URL'>'$NUMBER'</a>"; print}' input.csv > output.csv

到目前为止,我已经能够做到这一点,它只是创建了一个新列,并在整个列中重复了超链接,失败的输出结果如下:

失败结果

代码语言:javascript
运行
复制
number|name|age|gender|<a href=https://www.abcdef.com/search?query=></a>
B65|john|45|male|<a href=https://www.abcdef.com/query=B65>B65</a>
B74|jane|29|female|<a href=https://www.abcdef.com/query=B74>B74</a>

感谢你的帮助!

EN

Stack Overflow用户

发布于 2022-08-29 02:28:21

这个sed应该适用于您:

代码语言:javascript
运行
复制
sed -E '1s/$/|website/; 1!s~^([^|]+).*~&|<a href=https://www.abcdef.com/query=\1>\1</a>~' file

number|name|age|gender|website
B24|mike|22|male|<a href=https://www.abcdef.com/query=B24>B24</a>
B65|john|45|male|<a href=https://www.abcdef.com/query=B65>B65</a>
B74|jane|29|female|<a href=https://www.abcdef.com/query=B74>B74</a>
票数 4
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73523467

复制
相关文章

相似问题

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