如何插入','在第二个角色之后,'在每一行?
我想要以下内容:
input.txt中
a,b,c,d,e
e,f,g,
h,,i
output.txt的
a,b,,c,d,e
e,f,,g
h,,,i
提前致谢
答案 0 :(得分:3)
awk
救援!
$ awk -F, -v OFS=, '{$3=OFS $3}1' file
a,b,,c,d,e
e,f,,g,
h,,,i
在第二个,
之后是第三个字段。使用,
为第三个字段添加前缀并打印。
或者,将列号作为参数并编写一次分隔符。
$ awk -F, -v c=3 'BEGIN{OFS=FS} {$c=OFS $c}1' file
这可以理解为“在第3位插入新列”。请注意,这也会有效,添加第6列,使用sed
很难复制。
$ awk -F, -v c=6 'BEGIN{OFS=FS} {$c=OFS $c}1' file
a,b,c,d,e,,
e,f,g,,,,
h,,i,,,,
答案 1 :(得分:3)
输入
$ cat input
a,b,c,d,e
e,f,g,
h,,i
使用sed,如:
$ N=2
$ cat input | sed "s/,/&,/${N}"
a,b,,c,d,e
e,f,,g,
h,,,i
$ N=3
$ cat input | sed "s/,/&,/${N}"
a,b,c,,d,e
e,f,g,,
h,,i
你可以改变N.
s/pattern/replacement/flags
替换模式的替换字符串。 替代函数中的标志值为零或以下:
N Make the substitution only for the N'th occurrence
g Make the substitution for all
对于函数s/,/&,/${N}
,它找到第N个逗号并用两个逗号替换它(替换中出现的&符号(&
)被模式字符串替换)。 $ {N}只是一个变量。
顺便说一句,如果要插入“
,则需要转义特殊字符双引号答案 2 :(得分:2)
使用sed
:
sed -E 's/^([^,]*,[^,]*,)(.*)/\1,\2/' file.txt
示例:强>
% cat file.txt
a,b,c,d,e
e,f,g,
h,,i
% sed -E 's/^([^,]*,[^,]*,)(.*)/\1,\2/' file.txt
a,b,,c,d,e
e,f,,g,
h,,,i
答案 3 :(得分:0)
您可以像这样使用sed
:
sed 's/^[^,]*,[^,]*/&,/' file
a,b,,c,d,e
e,f,,g,
h,,,i