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

我想做的是从第一列中的每一行复制第一个数据并将其放入最后创建的列中的超链接

这是我每天收到的文件示例。我们将此文件称为 input.csv,我想将其转换为 output.csv

附言行数每天都不同。

INPUT.CSV

number|name|age|gender
B24|mike|22|male
B65|john|45|male
B74|jane|29|female

这就是我想要的样子:

输出.CSV

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>

为了让它更整洁,我放置了一些变量

测试.sh

#!/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

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

失败的结果

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>

感谢您的帮助!

最佳答案

第一个解决方案:使用您显示的示例,请尝试以下 awk代码。用 GNU 编写和测试 awk .

awk '
BEGIN { FS=OFS="|" }
FNR==1{
  print $0,"website"
  next
}
{
  print $0,"<a href=https://www.abcdef.com/query="$1">"$1"</a>"
}
'  Input_file


第二个解决方案 再添加 1 个 awk 的变体上面的代码使变量命名为 firstHeader其值为 <a href=https://www.abcdef.com/query=以防万一我们将来需要更改它,那么我们不需要更改主程序。

awk -v firstHeader="<a href=https://www.abcdef.com/query=" -v secheader="</a>" '
BEGIN { FS=OFS="|" }
FNR==1{
  print $0,"website"
  next
}
{
  print $0,firstHeader $1">"$1 secheader
}
'  Input_file

OR 在以上版本中使用三元运算符条件小调整:

awk -v firstHeader="<a href=https://www.abcdef.com/query=" -v secheader="</a>" '
BEGIN { FS=OFS="|" }
{
  print $0, (FNR==1 ? "website" : firstHeader $1">"$1 secheader)
}
'  Input_file

https://stackoverflow.com/questions/73523467/

相关文章:

java - 为什么 LocalDateTime.ofInstant() 需要 ZoneId

php - 静默捕获php "file_get_contents"错误

.net - Session.Timeout 和 Server.ScriptTimeout 有什么区

c - 为什么 putchar(1 +'0' ) 不输出 10?

r - 在整个数据帧上使用 ifelse()

c# - 我如何编写介于两个值之间的 if 语句?

oop - 理解对象交互的一些技巧是什么

php - 如何在 PHP 中将数字转换为字母?

php - 过滤消息的内容上的单词黑名单

amazon-ec2 - 一个 Amazon EC2 实例可以服务多少用户?