- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2020-3-25 18:32:01
|
显示全部楼层
也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file. a( }7 P+ c3 F6 E+ t6 Q
以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。
+ D( \( l' T0 X# c
1 C1 E2 T9 C1 `& S众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:: K/ O* Y1 k/ ~; P5 O* b2 m
. O6 N; ]0 k5 U5 s# l7 m) ~Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。) ~2 Q. o' K1 ? B$ }4 n
, l. M$ j+ p/ }2 |2 G) K好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。
$ |/ G8 ]& Q! q% S2 B6 p8 S, c* F" Y: F
要把文件转换一下,有两种方法:" u ~9 r2 ^+ q- ?9 O2 _
1.命令dos2unix test.file6 ~, d" H9 D0 ^7 H% y: ~; l
2.去掉"\r" ,用命令sed -i 's/\r//' test.file |
|