linux shell 用sed命令在文本的行尾或行首添加字符详解程序员
from:http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~
用sed命令在行首或行尾添加字符的命令有以下几种:
假设处理的文本为test.file
在每行的头添加字符,比如 HEAD ,命令如下:
sed s/^/HEAD /g test.file
在每行的行尾添加字符,比如“TAIL”,命令如下:
sed s/$/ TAIL/g test.file
运行结果如下图:
几点说明:
1. ^ 代表行首, /$ 代表行尾
2. s/$/ TAIL/g 中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了
例:
3.如果想导出文件,在命令末尾加 outfile_name ;如果想在原文件上更改,添加选项 -i ,如(这里的-i,可以理解为其他命令执行后的结果重定向到原文件,所以-n p等参数会影响-i的效果)
4.也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符 HEAD 、“TAIL”,命令:sed /./{s/^/HEAD s/$/ TAIL/} test.file
以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。
众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:
Unix系统里,每行结尾只有“ 换行 ”,即“/n”;Windows系统里面,每行结尾是“ 换行 回 车 ”,即“/n/r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。
好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用 cat -A test.file 命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。
要把文件转换一下,有两种方法:
1.命令dos2unix test.file
2.去掉 /r ,用命令sed -i s//r// test.file
好了,这样处理完,就OK啦!!!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/2620.html
服务器部署程序员系统优化网站设置运维相关文章
- 构建家庭网络:用Linux搭建家庭服务器(linux家庭服务器)
- 环境Linux快速切换桌面环境的方法(linux切换桌面)
- Linux系统下的程序开发之路(linux下的程序开发)
- 搭建王宝明:Linux系统搭建实践之路(王宝明linux)
- Linux下使用压缩软件轻松管理文件(linux压缩文件软件)
- 快速排序Linux命令快速实现排序(linux命令实现)
- Linux命令执行指南:快速掌握基本操作(linux命令如何执行)
- 命令Linux模拟输入命令:轻松实现自动操作(linux模拟输入)
- 控制Linux文件夹组权限管理的实践(linux文件夹组权限)
- 掌握 Linux 中 vi 命令的秘诀(linux的vi命令)
- 使用in命令管理Linux系统(in命令linux)
- Linux命令掌握:编辑文件.(编辑文件linux命令)
- Linux 蜂鸣器操作指南:如何使用命令行控制蜂鸣器(linux蜂鸣器命令)
- 25字中文标题:Linux,你值得拥有的装机必备!(linux装机必备)
- 如何在Linux下查看后台命令(linux查看后台命令)
- Linux常用域名解析命令汇总,让你更好的管理你的网络资源(linux域名解析命令)
- 25字中文文章标题:深入解析Linux中的Top命令(linux top命令详解)
- Linux 命令下添加网关的简单方法(linux命令添加网关)
- Linux截图命令: 一步到位提升截图效率(linux 截图 命令)
- Linux 命令操作:简单开启文件之门(linux命令打开文件)