易陆发现论坛

 找回密码
 开始注册
查看: 56|回复: 3
收起左侧

使用sed -i参数在文本前或者后添加字符

[复制链接]
发表于 2020-3-25 18:28:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
sed -i '/s/$/\'/g' 文本1 I4 r+ ]; `7 J; ~! R& ^

. Z, B( t; M2 S 在文本的行末添加一个字符:( U  ~4 f, X/ B/ ~& F3 R4 A
例子:
+ p. U' }8 L. f/ c, Ssed -i "s/$/'/g" nv.txt; p  y0 i* C; c4 B$ q, v
在行首添加字符 '单引号字符串:  l+ U! y5 r! ^2 _5 ^8 l
:%s/^/'/g; a7 c5 p- [5 F: ?
例子:
5 T9 q8 M2 H, T! T% x9 s+ ]sed -i "s/^/'/g" nv.txt   % `. a! e0 i- Z( Z# C. U5 F

( w/ {7 o" @4 T2 Z) {配合sed命令:
8 W2 k, t7 o4 l0 Q+ B' Zhttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=805&highlight=sed
/ ]1 J* j. z( l/ ^! ?http://www.bbs168x.cn/forum.php?mod=viewthread&tid=199&highlight=sed
  z+ R; _+ P/ t3 Phttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=130&highlight=sed
3 x; X$ r% K+ g! T# ]9 p( `/ e- n0 q1 K8 [- `4 x
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=325&highlight=sed
8 X% U3 M% Z" x2 yhttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=606&highlight=sed
  H* s+ {, ~( S# O3 o: f1 f
 楼主| 发表于 2020-3-25 18:30:55 | 显示全部楼层
sed -i 的使用方法,可以参考官方文档。9 N+ s. _5 M8 f7 s  j: [  W
0 t1 f  I4 }3 }
另外sed 的使用方法:9 R: {0 D6 F7 \
在每行的行尾添加字符,比如“TAIL”,命令如下:
+ o- g1 @7 [. X' [' B5 w4 r4 Msed 's/$/&TAI/g' test.file, ]3 k9 a7 |, i" i
运行结果如下图:" |% F# H+ ]; b& ?

+ I# f; |5 `5 i& s% L( l, s# y, J! |sed 's/$/&TAI/g' nfv.txt7 Y& k+ T4 T- }9 D& j
''$172.21.78.7'TAI; G) x3 M7 N* I% ]) m' p" q+ i+ b$ P- U
''$172.21.78.4'TAI' ~0 v& e  `4 w) E& n+ O* d
''$172.21.78.1'TAI
 楼主| 发表于 2020-3-25 18:31:35 | 显示全部楼层
要把文件转换一下,有两种方法:
5 F+ }; o* G) Y" C9 E$ \1.命令dos2unix test.file
0 g( T. F" ~1 O2 f2.去掉"\r" ,用命令sed -i 's/\r//' test.file
% y8 d) H* v/ m9 ]5 i7 b4 @. Q6 N  ^4 r. I9 k- h4 W8 s) n
 楼主| 发表于 2020-3-25 18:32:01 | 显示全部楼层
也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file9 D6 q" ]) V  Y6 `
以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。
5 L# P" V9 R  y; N6 g; E* F" W% |" O# C. `% D1 l% |
众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:
& A5 t- u' j! h- C, v4 b7 Y  {6 ^; M$ G% X
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。6 J6 d) v9 \! E( y  A. J2 x9 o, o
  b4 S; L5 g1 L) B. B0 l- c+ Y
好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。
! o+ a; Z" ~+ c$ f) n9 f1 G
$ A; q, }4 s7 I  |, _2 @3 o" ~8 `要把文件转换一下,有两种方法:& a6 e3 |( a4 N( S* r
1.命令dos2unix test.file
8 h. q/ O9 U) H" ]& ~/ _9 p& e; ]& o. ~2.去掉"\r" ,用命令sed -i 's/\r//' test.file
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2020-4-8 03:29 , Processed in 0.055611 second(s), 20 queries .

Powered by 龙睿 bbs168x X3.2

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表