将文本添加到 csv 文件的第三列

时间:2021-06-14 00:48:37

标签: sed

我有一个数据文件,我需要使用 sed 将文本添加到第 3 列。我当前的数据如下所示:

0001   2345    103 Jane   Doe
0002   4567    103 Jane   Doe
0003   4578    105 John   Doe
0004   5678    103 Jane   Doe

我需要它看起来像:

0001   2345    103061321 Jane   Doe
0002   4567    103061321 Jane   Doe
0003   4578    105061321 John   Doe
0004   5678    103061321 Jane   Doe

如何使用 SED 执行此操作?

2 个答案:

答案 0 :(得分:0)

试试这个:

echo "0001 2345 103 Jane Doe 0002 4567 103 Jane Doe 0003 4578 105 John Doe 0004 5678 103 Jane Doe" > test
sed -i 's/ 103 / 103061321 /g' test
cat test

结果: 0001 2345 103061321 Jane Doe 0002 4567 103061321 Jane Doe 0003 4578 105 John Doe 0004 5678 103061321 Jane Doe

答案 1 :(得分:0)

sed -E 's/ +/061321&/3' file

这将第 3 次出现的空格替换为 061321[whitespace] ... 有效地将 061321 添加到空格分隔数据的第 3 列的末尾。

  • sed -E -- 扩展正则表达式以允许在正则表达式中使用未转义的 +
  • / +/ 匹配一个或多个空格
  • /061321&/ 替换为 061321 和 & - 匹配的内容
  • s///3 - 仅对每行的第 3 次匹配进行替换

由于 OP 中的格式不佳,以上假设以空格分隔。如果数据如“CSV”所暗示的那样以逗号分隔,那么它就是这样:

sed 's/,/061321,/3' file

... 将每行的第三个逗号替换为 061321,

相关问题