【发布时间】:2022-01-07 21:21:21
【问题描述】:
我一直在处理一个 csv 文件。
我只想替换第 3 列和第 4 列。
这是一个例子:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
c1 f2 stack.overflow stack.overflow f5 stack.overflow stack.overflow
d1 g2 stack2.overflow2 stack2.overflow2 xyx stack2.overflow2 stack2.overflow2
我只执行 Col3 和 Col4 的搜索和替换。
我得到的是:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
c1 f2 macy.greytold macy.greytold f5 stack.overflow stack.overflow
d1 g2 prince.caballero prince.caballero xyx stack2.overflow2 stack2.overflow2
我用过 sed:
sed ' s!stack.overflow2!prince.caballero!g' filename.csv > test1.csv
sed ' s!stack.overflow!macy.greytold!g' test1.csv > test-2.csv
但这改变了一切。有没有办法只更改字段 3 和 4?
请注意,我给出了 2 行的示例。这可以运行到 100 行。
【问题讨论】:
-
你应该看看 awk。它可以与指定的列一起使用并对其进行替换。我不记得确切的语法
-
您能否确认您的值之间是否可以有空格,例如:
stack overflow? -
您说您的输入是 CSV,但您提供的示例输入/输出不是 CSV。请edit您的问题是将文件描述从 CSV 更改为任何内容(制表符分隔?固定宽度字段?其他?),或者将您的示例更改为 CSV。
-
@RavinderSingh13 它们之间不是空格。
-
@EdMorton 这是一个 CSV 文件,用逗号分隔。只是为了更容易查看,我像示例一样给出了它。