gpt4 book ai didi

linux sed 命令 - 在 csv 行的每一端添加字符串

转载 作者:IT王子 更新时间:2023-10-29 00:14:10 27 4
gpt4 key购买 nike

目前我在 ff CSV 数据上遇到问题。

COLUMN1,COLUMN2,COLUMN3,COLUMN4
apple1,apple2,apple3,apple4
banana1,banana2,banana3,
caimito1,"caimito21
caimito22","caimito31
caimito32",caimito4

看起来像这样:

╔══════════╦═══════════╦═══════════╦══════════╗
║ COLUMN1 ║ COLUMN2 ║ COLUMN3 ║ COLUMN4 ║
╠══════════╬═══════════╬═══════════╬══════════╬
║ apple1 ║ apple2 ║ apple3 ║ apple4 ║
║ banana1 ║ banana2 ║ banana3 ║ ║
║ caimito1 ║ caimito21 ║ caimito31 ║ caimito4 ║
║ ║ caimito22 ║ caimito32 ║ ║
╚══════════╩═══════════╩═══════════╩══════════╝

所以我的计划是添加 COLUMN5,它的每一行都有一个值“FRUIT”。

使用的命令:

sed "1 s/$/,COLUMN5/g" FILE.csv | sed "2,$ s/$/,FRUIT/g" > OUTPUT.csv

输出:

╔══════════╦════════════════╦════════════════╦══════════╦═════════╗
║ COLUMN1 ║ COLUMN2 ║ COLUMN3 ║ COLUMN4 ║ COLUMN5 ║
╠══════════╬════════════════╬════════════════╬══════════╬═════════╣
║ apple1 ║ apple2 ║ apple3 ║ apple4 ║ FRUIT ║
║ banana1 ║ banana2 ║ banana3 ║ ║ FRUIT ║
║ caimito1 ║ caimito21FRUIT ║ caimito31FRUIT ║ caimito4 ║ FRUIT ║
║ ║ caimito22 ║ caimito32 ║ ║ ║
╚══════════╩════════════════╩════════════════╩══════════╩═════════╝

有没有办法在不影响“caimito”行的情况下添加“FRUIT”?

我也试过 ff。命令,但没有成功。在“$”之前添加了“,”。

sed "1 s/$/,COLUMN5/g" FILE.csv | sed "2,$ s/,$/,FRUIT/g" > OUTPUT.csv

最佳答案

Sed 可能不是处理 csv 文件的正确工具,因为规则比它看起来的复杂得多(这可能是可能的,但此类脚本通常很容易出错,等等)。但是,您可以使用 csvtools 来处理此问题:

file="FILE.csv"
nr=$(csvtool height $file)
ot=$(perl -e "print \"COLUMN5\\n\";for\$i(2..$nr){print \"FRUIT\\n\";}")
echo "$ot" | csvtool paste "$file" -

脚本的工作原理如下:

  1. 首先我们用csvtool height计算行数,
  2. 接下来,我们通过打印 COLUMN5 后跟 n-1FRUIT 来生成附加列。
  3. 最后,我们将该内容粘贴到文件的右侧。

关于linux sed 命令 - 在 csv 行的每一端添加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com