在 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
我有一个 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