gpt4 book ai didi

linux - 如何使用 shell 脚本删除 CSV 文件中多行中常见的特定字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:49 25 4
gpt4 key购买 nike

我有一个包含 65000 行的 csv 文件(大小约为 28 MB)。在每一行中,开头都给出了特定路径,例如“c:\abc\bcd\def\123\456”。现在假设路径“c:\abc\bcd\”在所有行中都是通用的,其余内容不同。我必须使用 shell 脚本从所有行中删除公共(public)部分(在本例中为“c:\abc\bcd\”)。例如CSV文件的内容如前所述。

C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.frag                   0   0   0
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.vert 0 0 0
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.link-link-0.frag 16 24 3
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.link-link-0.vert 87 116 69
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.link-link-0.vert.bin 75 95 61
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.link-link-0 0 0
C:/Abc/Def/Test/temp\.\test\GLNext\FILE0.link-link-6 0 0 0

在上面的例子中,我需要如下输出

FILE0.frag                  0   0   0
FILE0.vert 0 0 0
FILE0.link-link-0.frag 17 25 2
FILE0.link-link-0.vert 85 111 68
FILE0.link-link-0.vert.bin 77 97 60
FILE0.link-link-0 0 0
FILE0.link 0 0 0

你们谁能帮我解决这个问题吗?

最佳答案

你可以使用 sed :

$ cat test.csv 
"c:\abc\bcd\def\123\456", 1, 2
"c:\abc\bcd\def\234\456", 1, 2
"c:\abc\bcd\def\432\456", 3, 4

$ sed -i.bak -e 's/c\:\\abc\\bcd\\//1' test.csv

$ cat test.csv
"def\123\456", 1, 2
"def\234\456", 1, 2
"def\432\456", 3, 4

我在这里使用 sed 是这样的:

sed -e 's/<SEARCH TERM>/<REPLACE_TERM>/<OCCURANCE>' FILE

在哪里

  • <SEARCH TERM> 是我们正在寻找的(在本例中为 c:\abc\bcd\ ,但反斜杠需要转义)。
  • <REPLACE TERM> 是我们想要替换它的内容,在本例中什么都没有,并且
  • <OCCURANCE> 是我们要替换的项目的出现次数,在本例中是每行中的第一个项目。

(-i.bak代表:不输出,直接编辑这个文件。(但要先备份))

根据@david-c-rankin 评论更新。他是对的,在编辑文件之前先备份一下,以防出错。

关于linux - 如何使用 shell 脚本删除 CSV 文件中多行中常见的特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644981/

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