易陆发现互联网技术论坛

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

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

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

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

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

x
sed -i '/s/$/\'/g' 文本
" x% N. C9 y7 D1 X/ M+ C
! t. j% D$ u! M/ u 在文本的行末添加一个字符:. {+ _9 U) t  G
例子:
0 \' L6 s8 R; S9 [  Qsed -i "s/$/'/g" nv.txt6 d' m% M) g2 \9 a  s
在行首添加字符 '单引号字符串:
( r4 G7 K: F1 F6 k:%s/^/'/g8 l% R  `8 p  `, h1 ~) T: `
例子:
2 e5 @# \" X% s2 \0 csed -i "s/^/'/g" nv.txt   4 u: t* [9 c0 `
/ Y/ D+ T4 ]' R/ q5 ?' c
配合sed命令:
8 `4 l3 A" D! w- n# \. ~& Ohttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=805&highlight=sed
3 r  R  m* Y1 }, Shttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=199&highlight=sed
& H9 I: ?; U2 _3 h* }  Whttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=130&highlight=sed+ h# F' h8 X3 H' o; j( ?$ {3 W4 s0 y

* A' y' P7 S  ^http://www.bbs168x.cn/forum.php?mod=viewthread&tid=325&highlight=sed
/ d9 e( G2 C. ?' r$ Dhttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=606&highlight=sed) r5 U6 f6 w1 M2 C
 楼主| 发表于 2020-3-25 18:30:55 | 显示全部楼层
sed -i 的使用方法,可以参考官方文档。
( T3 m& W0 Q0 |% G, ?) Z1 ?
+ {% u0 p* @& t+ J/ ?3 E8 {另外sed 的使用方法:
3 m, T0 _. b# \! ~9 J, c7 }在每行的行尾添加字符,比如“TAIL”,命令如下:
  Y7 i% q' l$ _! S+ I5 n& L" tsed 's/$/&TAI/g' test.file0 ?" J1 W' @" e- a+ O2 F9 z
运行结果如下图:
& T! s: S  E) R% {, A
% M7 s, q6 {) Y) tsed 's/$/&TAI/g' nfv.txt
: k- L8 K) z; y''$172.21.78.7'TAI( Z9 ?: L0 t5 U/ e
''$172.21.78.4'TAI2 j0 Z: q  f! b5 U7 H& a2 \
''$172.21.78.1'TAI
 楼主| 发表于 2020-3-25 18:31:35 | 显示全部楼层
要把文件转换一下,有两种方法:
" T( V: i7 n( I# l( J$ e1.命令dos2unix test.file3 o  p* |3 ~* T, S8 K8 [6 W
2.去掉"\r" ,用命令sed -i 's/\r//' test.file
+ m, p( Y+ W- |7 J$ d
1 e' J2 w0 T! b" M
 楼主| 发表于 2020-3-25 18:32:01 | 显示全部楼层
也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file
' B2 y9 X7 [$ a, H% W以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。# \! y7 r) [/ H! _/ |7 ~" `

7 x7 D/ x0 b  B* x! G众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:: y, j& _; |" O" t
. c5 g5 l1 \1 ]% F+ l$ l* n9 f+ V
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。
2 X7 {' ?1 A. \- I8 G: }9 T+ g+ i
. v- i+ T5 K. a) u5 D好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。# i+ f; d7 Q, g+ [+ f: p* e
1 K+ k5 f& L- J' d& m
要把文件转换一下,有两种方法:
" ~2 Y) t  q. M' @+ h$ M0 A/ E" r! N1.命令dos2unix test.file
. ?- I& ^- S8 w+ O8 \, U( o2.去掉"\r" ,用命令sed -i 's/\r//' test.file
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:37 , Processed in 0.050382 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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