我要做的是从第一列中的每一行复制第一次数据,并将其放到创建的最后一列的超链接中
这是我每天得到的文件的一个例子。让我们调用这个文件input.csv,我想将它转换为output.csv
每天的行数各不相同。
INPUT.CSV
number|name|age|gender
B24|mike|22|male
B65|john|45|male
B74|jane|29|female这就是我想要的样子:
OUTPUT.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>为了使它更整洁,我把一些变量放在了适当的位置。
test.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>感谢你的帮助!
发布于 2022-08-29 02:28:21
这个sed应该适用于您:
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>https://stackoverflow.com/questions/73523467
复制相似问题