我有一个如下所示的文件:
a,b,c,d,e,f
1,2,3,4,5,6
7,8,9,0,1,2
我需要用逗号连接最后两行,如下所示:
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
问题是这一切都在一个循环内,该循环将向该文件添加两行新行,例如
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5
4,3,2,1,0,9
现在我需要做同样的事情那文件结束的最后一行
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9
所以,简而言之,我需要更换最后的文本文件的新行,带有逗号,但只有最后一行,因为正在添加行。
我已经尝试了几种方法,但它们不起作用。最后一个是sed '$!N;s/\n/,/' dna.data
,但它适用于所有带有换行符的行。
有任何想法吗?
答案1
如果文件不以换行符结尾,您只需处理最后一个替换命令(使用 标志-i
就地sed
更改文件):
$ sed '$!N;$s/\n/,/' dna.data
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9
如果文件以换行符结尾,您可以使用编辑器ex
:
$ ex dna.data
$-1s/\n/,/
1,2,3,4,5,6,7,8,9,0,1,2
x
或在一行中
echo -e '$-1s/\\n/,/\nx' | ex dna.data
答案2
这可能对你有用(GNU sed):
sed -i '$!N;$s/\n/,/;P;D' file