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啦!!!

转载于:https://www.cnblogs.com/jiu0821/p/6268500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lambda写法(多参数)

Lambda 表达式基本形式(input parameters) > expression< XMLNAMESPACE PREFIX "[default]" httpmsdnmicrosoftcommtps NS "http://msdn2.microsoft.com/mtps" />只有在 Lambda 有一个输入参数时&#xff0c;括号才是可选的&#xff1b;否则括号是…

linux 自动安装mysql_linux安装mysql教程

1.系统约定安装文件下载目录&#xff1a;/data/softwareMysql目录安装位置&#xff1a;/usr/local/mysql数据库保存位置&#xff1a;/data/mysql日志保存位置&#xff1a;/data/log/mysql执行如下命名&#xff1a;#mkdir /data/software#cd /data/software--下载安装包--建议&a…

C# Repeater绑定显示数组

此处绑定的对象拥有string[] Contents属性&#xff0c;绑定时将Contents[0]和Contents[1]分别绑定<asp:Repeater runat"server" ID"rptDatabase"><ItemTemplate><li><a href"Database.aspx?id<%#Eval("Contents[0]&quo…

spring使用JdbcTemplate和jdbcDaosupport及具名参数使用

关于jdbctemplate: 个人感觉比Java链接mysql那一套方便好维护多了&#xff0c;只需在配置文件维护即可 需要的包&#xff1a; com.springsource.net.sf.cglib-2.2.0.jarcom.springsource.org.aopalliance-1.0.0.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarcommo…

IIS添加直接下载的文件类型

扩展名 .dataMIME类型 application/octet-stream

密钥

【AES】 一种对称加密算法&#xff0c;DES的取代者。 加密相关文章见&#xff1a;Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA 【代码】 代码比较多&#xff0c;有一部分非本文章内容代码&#xff0c;具体自己看吧。 [java] view plaincopy print?package…

mysql复制安全性_从MySQL复制功能中得到一举三得实惠

在MySQL数据库中&#xff0c;支持单项、异步复制。在复制过程中&#xff0c;一个服务器充当主服务器&#xff0c;而另外一台服务器充当从服务器。如下图所示。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录…

WhqDatabase 我自己用C#开发的列式数据库

项目地址&#xff1a;https://github.com/wanghongqi/WhqDatabase WhqDatabase 作者&#xff1a;王洪岐 本项目为一个C#实现的列式数据库&#xff0c;欢迎大家提出指正意见。项目中包含对Kernel完整的测试。 项目列表&#xff1a;Kernel 内核Test 对内核的测试Service 可视的…

自定义安装mysql linux_linux下 安装mysql 问题

展开全部因为32313133353236313431303231363533e4b893e5b19e31333365633934mysql程序在启动的时候 非常依赖my.cnf里面的配置&#xff0c;而my.cnf文件中的配置&#xff0c;在执行mysql初始化的时候就可以手动指定。如果mysql不是使用yum安装&#xff0c;而是将mysql安装到自定…

js中斜杠转义

js中“/”不需要转义。 if(myPath.indexOf("/Upload/EmailFile/")!-1){ alert("有附件&#xff01;")}转载于:https://www.cnblogs.com/Tpf386/p/6282773.html

SVN强制解锁操作

如果是其他人锁定文件&#xff0c;而你期望对此文件操作&#xff0c;可进行偷锁操作。 1&#xff0c;将被锁定文件SVN Check out…到本机硬盘。 2&#xff0c;点击文件右键&#xff0c;选择get lock&#xff0c; 3&#xff0c;勾上steal the locks 4,之后再进行Release Lock操作…

前端学习(2244):计算器显示问题

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>奥里给&#xff01;</title><style type"text/css">.a {height: 100px;width: 450px;border: 3px solid black;background-color: beige;font-size…

MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源&#xff0c;已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色&#xff0c;但所谓“好马配好鞍”&#xff0c;如何能够更好的使用它&#xff0c;已经成为开发工程师的必修课&#xff0c;我们经常会从职位描述上看到诸…

C语言沉浸式刷题【C语言必刷题】

1.猜凶手 某地发生了一起谋杀案&#xff0c;警察通过排查确定杀人凶手必为四个嫌疑犯的一个&#xff0c;以下是4个嫌犯的供词。已知&#xff08;请编写代码找出凶手&#xff09; A说&#xff1a;不是我。 B说&#xff1a;是C。C说&#xff1a;是D。D说&#xff1a;C再胡说。 程…

C#操作IIS6创建网站应用程序无效

创建网站root目录时执行AppCreate即可DirectoryEntry vdEntry newSiteEntry.Children.Add("root", "IIsWebVirtualDir");vdEntry.Invoke("AppCreate", true);vdEntry.CommitChanges();