找回密码
 注册
查看: 4294|回复: 3

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-3-25 18:28:05 | 显示全部楼层 |阅读模式
sed -i '/s/$/\'/g' 文本* m, y: L. t+ W& r% B5 j8 A2 n
/ q: F) @( O$ b% D
在文本的行末添加一个字符:) I" K; f! B, _# F' n
例子:# T5 B; ^6 q. X1 k0 `- b# t" b
sed -i "s/$/'/g" nv.txt
8 |& k2 S2 L2 H% G) t" d在行首添加字符 '单引号字符串:2 q& k3 W! n) [% p) _* p
:%s/^/'/g2 M" h% N9 ]2 F/ O
例子:
, z2 C4 n. H, ?3 ^sed -i "s/^/'/g" nv.txt   ; b$ _6 k5 v+ u5 Y: l9 s% n8 R! a
4 u% {& I( \, @8 m6 T9 ^
配合sed命令:9 m5 R# v* r! ~' U+ q& L5 `
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=805&highlight=sed$ x( [  b1 A/ m! m5 u( |
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=199&highlight=sed$ E  V  s; d' H( t& w2 ~2 t
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=130&highlight=sed# x4 g; l( q0 e( h. D
  @/ \  E) H3 M" H( ?
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=325&highlight=sed
  o! ]7 C* W  vhttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=606&highlight=sed
' i, n. ^; n! C

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-25 18:30:55 | 显示全部楼层
sed -i 的使用方法,可以参考官方文档。7 {, G* M' [+ \, G
; [4 E) h2 `% l/ H7 ~8 j
另外sed 的使用方法:' o$ g8 U) m7 B% ^0 C8 R$ N1 l" }0 E
在每行的行尾添加字符,比如“TAIL”,命令如下:
8 Q% A* F1 j' }9 w, r* Ksed 's/$/&TAI/g' test.file
' r$ b% D0 A4 u1 C$ w7 e运行结果如下图:
# \$ V5 B" F, u# m" |; D' C, J2 l7 ^
sed 's/$/&TAI/g' nfv.txt& D* c0 [/ V+ L) O9 W
''$172.21.78.7'TAI
, _! v8 o& q/ `+ u1 r' k, @2 A''$172.21.78.4'TAI
- p$ Z, J! m  M" N2 o''$172.21.78.1'TAI

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-25 18:31:35 | 显示全部楼层
要把文件转换一下,有两种方法:% H" d! j  w: g2 H8 [1 e
1.命令dos2unix test.file
  Y; |8 Q: P: L: _, c/ S2.去掉"\r" ,用命令sed -i 's/\r//' test.file; l  U2 _: e" Q8 q
: v) ~' |- R. J

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-25 18:32:01 | 显示全部楼层
也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file$ ^5 C! @2 a0 a, ~5 k9 z
以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。  d" l/ H. B, W9 v

6 q/ G! t2 ?. v& |众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:
9 L# f" y3 [9 J, x
! s8 A3 ^& m* m( x: f5 FUnix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。
/ o2 W7 H' z8 N# s
+ Q8 F$ ~$ c# w( V& j" I7 s+ [) f好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。; r3 v4 N* C- V
. Y4 f1 M8 {; N: N" i7 I5 \
要把文件转换一下,有两种方法:4 T7 u( a% n" e3 I0 j8 G5 D
1.命令dos2unix test.file- X0 c& A4 e# M6 v
2.去掉"\r" ,用命令sed -i 's/\r//' test.file
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 05:34 , Processed in 0.017499 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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