我有一个数据文件,我需要使用 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 执行此操作?
答案 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,