易陆发现互联网技术论坛

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

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

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

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

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

x
sed -i '/s/$/\'/g' 文本
0 M4 s4 U" I4 b- v8 s9 d0 F7 P5 c
在文本的行末添加一个字符:) W! j3 r% x  z- R) B
例子:
5 `8 T9 a6 c9 E8 ?: |) _% I- l0 S3 vsed -i "s/$/'/g" nv.txt7 F! p7 \. m' ^  B5 ]  a. [
在行首添加字符 '单引号字符串:
- Q- i' J! V8 Q/ C* M:%s/^/'/g  n  j3 k, e! K( n0 F3 q
例子:, I* h; E$ z! J% {
sed -i "s/^/'/g" nv.txt   * f3 ^& B6 c* E& J0 m
, \! l" ~" A% D# b% B) z% _
配合sed命令:
& Z" w: M; o& w7 _: O4 ]http://www.bbs168x.cn/forum.php?mod=viewthread&tid=805&highlight=sed+ ~3 U( d; W" G# O9 E% k1 \; V0 ^0 i* X
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=199&highlight=sed0 N4 S" R" M, K9 |+ B
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=130&highlight=sed) u1 d1 R: n9 k
5 G1 |1 G6 }+ O* K& G" t/ r% c
http://www.bbs168x.cn/forum.php?mod=viewthread&tid=325&highlight=sed
! {) W; ?$ v& o) p9 v4 Z' j) o; U- qhttp://www.bbs168x.cn/forum.php?mod=viewthread&tid=606&highlight=sed$ x& \9 n( f3 l7 o: a4 s' H0 B
 楼主| 发表于 2020-3-25 18:30:55 | 显示全部楼层
sed -i 的使用方法,可以参考官方文档。7 D. p1 i$ ^2 y
) Z+ e7 j! _7 I
另外sed 的使用方法:
6 ^6 x3 L$ r- ]1 E% k  @在每行的行尾添加字符,比如“TAIL”,命令如下:
& a& C' H2 N' N! Osed 's/$/&TAI/g' test.file
9 V" l. d+ T" U* I( S. }8 d运行结果如下图:
. t+ i# m- u& ^4 W# B
, v6 d. \* u: v$ E% ^% {0 e" Msed 's/$/&TAI/g' nfv.txt
7 ?* ?% ^, _5 [/ T) f# z$ Z& k- n6 l''$172.21.78.7'TAI3 Y- z& d5 d, G  o; g2 l8 C/ M; E" x
''$172.21.78.4'TAI- N! W% \3 R6 p# @1 V. U
''$172.21.78.1'TAI
 楼主| 发表于 2020-3-25 18:31:35 | 显示全部楼层
要把文件转换一下,有两种方法:) t& v1 B) D& e& O0 A& r, @
1.命令dos2unix test.file
, f: t" F4 O/ {/ u6 r2.去掉"\r" ,用命令sed -i 's/\r//' test.file
( g7 p0 j. [1 Z7 w( p+ M+ k
9 }" B: }  P3 Q- B# u
 楼主| 发表于 2020-3-25 18:32:01 | 显示全部楼层
也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file
9 T/ J5 X. {9 O- [# @以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。
2 E: Y4 v3 L% s9 Y( o
6 i) Y9 x' j4 n( r8 _% A众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:: s9 M/ }+ b2 y% z1 `
; l5 ?) Z5 X8 u9 S! ]5 K
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。, Z8 l' O( \" D4 f8 o
: S; [# F, V4 p+ d% J; ]. [/ `5 r9 s% s
好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。
0 Q# u& Z- a8 w3 G0 x5 }/ O0 r- ^5 Z8 D# o2 z! p) w: r
要把文件转换一下,有两种方法:
5 V  t: Q: Z1 X7 C$ g1 H1.命令dos2unix test.file
, ?. j& e8 ^+ _! f4 z2.去掉"\r" ,用命令sed -i 's/\r//' test.file
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-9 00:02 , Processed in 0.052151 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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