在 csv 的每一行的列中的一个字符之后剪切文本字符串,保留其他列,并打印到新文件

Cut string of text after a character from a column each line of a csv, keeping the other columns, and printing to a new file

我有一个 CSV 文件,第一列显示为:

/Users/swilki/Desktop/Africa_OSSD/OSSD_Output/BER5_OSSD_F008071.csv.0.01.out.csv

后跟列出从其他 CSV 文件中提取的计数的附加列。

我想要的是从每一行中删除“/Users/swilki/Desktop/Africa_OSSD/OSSD_Output/”而不影响文件的任何其他部分。

我试过使用 sed、grep 和 cut,但这似乎只打印了终端中的输出或一个只包含那部分行而不包含其余列的新文件。我可以删除“/Users/swilki/Desktop/Africa_OSSD/OSSD_Output/”并保持其他所有内容不变吗?

您可以使用 awk 来完成这项工作。
请看下面的代码,它将内容 /Users/swilki/Desktop/Africa_OSSD/OSSD_Output/ 替换为 "" 为空,并将使用选项 inplace
更新同一文件中的操作 yourfile.csv 是输入文件。

awk -i inplace '{sub(/\/Users\/swilki\/Desktop\/Africa_OSSD\/OSSD_Output\//,"")}1' yourfile.csv

以上将删除“/Users/swilki/Desktop/Africa_OSSD/OSSD_Output/”并保持其他所有内容不变。
yourfile.csv的输出:
BER5_OSSD_F008071.csv.0.01.out.csv

选项2,如果要在新文件中打印
下面的代码将在新文件 your_newfile.csv

中给出替换的内容
awk '{sub(/\/Users\/swilki\/Desktop\/Africa_OSSD\/OSSD_Output\//,"")}1' yourfile.csv >your_newfile.csv