linux日常命令之三
一、换行符
linux换行符为\n,而windows换行符为\r\n。
因此,linux的原生文本文件,换行符为\n,而windows为\r\n;将linux文件拷贝至windows,换行符保持不变,仍为\n,windows同理。
需要注意的是,将windows原生文件拷贝至linux处理时,若要去除换行符,只需去除\n即可,因为linux不识别\r。但是将去除\n的文件再拷回windows时,\r依然存在,需做相应处理。
对于linux长文本而言,去换行符时最好去除\r,以免出问题。linux中,\r为^M,需按住ctrl+V,然后再敲M得到。
二、sed删除换行符\n
使用命令sed "s/\n//g" file发现,没起到任何效果。
经查sed官方用户手册,才得知,sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline,其实就是行的分隔符即换行符。
个人理解为,\n作为行结束的标志,并不作为行处理的文本内容。因此需要使用循环处理。
一、使用test跳转命令,实现替换换行符:
sed ":a;N;s/\n//g;ta" a.txt
N是把下一行加入到当前的hold space模式空间里,使之进行后续处理,最后sed会默认打印hold space模式空间里的内容。也就是说,sed是可以处理多行数据的。
:a和ta是配套使用,实现跳转功能。t是test测试的意思。另外还有:a和ba的配套使用方式,也可以实现跳转功能。b是branch分支的意思。
二、使用branch跳转命令,实现替换换行符。
sed ":a;N;s/\n//g;$!ba" a.txt
增加$!ba语句,$的意思是最后一行,不跳转到标记a处,即退出命令循环。
branch和test区别:
branch无论每行执行成功与否,都循环到文本结束;而test在某行执行失败后便跳出循环。
branch
branch循环到文本结束。比如sed ":a;N;s/\n//g;ba" a.txt,转换成自然语言的描述,就是
while(1) {
N;
s/\n//g;
}
test
test可以根据替换命令的完成是否成功,决定是否跳转。比如sed ":a;N;s/\n//g;ta" a.txt,转换成自然语言的描述,就是
while(state == 1) { #默认state就当是1好了。
N;
s/\n//g; #成功,返回state为1;否则返回state=0。此state用于跳转判断。
}
else {
last; #即退出循环语句。
}
原文:https://blog.csdn.net/u011729865/article/details/71773840
三、sed
删除:d,替换:s
sed '2d' file -----删除file文件的第二行
sed '2,$d' file -----删除file文件的第二行到末尾所有行
sed '$d' file -----删除file文件的最后一行
sed '/test/'d file -----删除file文件所有包含test的行 #其中两个’/’用于匹配字符
sed '1~2d' file -----删除奇数行
sed '1~2!d' file -----删除偶数行
sed '/^$/d' file -----删除空行
awk 'NF > 0' file -----删除空行 #NF表示每行的字段数
linux日常命令之三的更多相关文章
- (Linux 日常命令)[20171225]
目的:记录Linux日常所用命令 [20171222]Linux环境下查看硬件组件型号 cat /proc/cpuinfo及lspci 查看CPU [root@t-redhat- ~]# cat /p ...
- linux 日常命令(磁盘空间)
df –hl 在windows下可以很方便的查看磁盘空间的.但是到了Linux查看磁盘空间,你可能就有点摸不着头脑了,呵呵.不要急,我这就要给你解决这个问题. Df命令是Linux查看磁盘空间系统以磁 ...
- linux日常命令之二
ps -ef 查看当前系统所有进程,ps 进程查看命令,-e 显示所有进程,-f 全格式. free -h 查看系统实际使用内存的情况. 显示格式为: total used f ...
- linux日常命令之一
zcat Linux中,cat命令可查看文本内容: 对于压缩包内的文本,可使用zcat命令,在不解压的情况下查看文本内容: iconv file -i 可查看文件字符集: iconv为字符集转换命令, ...
- Linux 日常命令
命令 介绍说明 pwd 打印出当前所在目录 mkdir 创建一个目录 rmdir 删除一个目录 rm 删除文件或目录 -r:删除目录时必须加上 cp 复制一个文件或目录 -r:复制 ...
- Linux日常命令使用记录
scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入. 在服务器104.238.161.75上操作,将服务器 ...
- deepin Linux 日常命令、插件、方法等汇总【更新中】
查看系统编码: dawn@dawn-PC:~$ locale LANG=zh_CN.UTF- LANGUAGE=zh_CN LC_CTYPE="zh_CN.UTF-8" LC_NU ...
- 73条日常Linux shell命令汇总,总有一条你需要!
转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...
- linux日常---1、linux下安装、查看、卸载包常用命令
linux日常---1.linux下安装.查看.卸载包常用命令 一.总结 一句话总结: 对比学习 1.linux如何查看系统中安装的程序? rpm -qa # 查看所有安装的软件包 2.linux ...
随机推荐
- Java 基础 类加载器和双亲委派机制 学习笔记
转自博客:https://blog.csdn.net/weixin_38118016/article/details/79579657 文章不是我写的,但是感觉写的挺通俗易懂的,然后防止以后丢失,就转 ...
- 浅谈 cosos2d-x 的ImageView和Sprite的区别
ImageView 1. ImageView是继承于Widget的,是cocos2d-x的基类 2. 实现了类似于按钮监听的事件,通过addTouchEventListener添加事件 var ima ...
- 调研IOS的开发环境的发展演变
一. 关于IOS的开发发展历史: 百度一下,关于这方面的详细资料有很多,在这里就不复制粘贴占用篇幅了. 二. 关于个人搭建IOS开发环境的体验: 本人用的是华硕电脑,window7的操作系统,本来为了 ...
- IDEA去除自动检测bean是否存在
操作步骤如下图所示:
- 【Mysql】Mysql Json类型或Text类型可以建索引吗?
一.JSON类型 答案是不可以 为Json类型建索引会报错 mysql)); ERROR (): JSON column 'card_pay_data' cannot be used in key s ...
- linux存储管理之文件系统
EXT3/4文件系统 ====================================================================================Ext3: ...
- mongo学习笔记---1
mongo简介 非结构化数据库,数据都是以Bson格式(json的二进制)存储的. 特点:不需要指定表结构,存在一张表里的数据其结构可以完全不同.内部执行引擎为JS解释器, 把文档存储成bson结构, ...
- Node.js的缺陷
Node.js最大的优点是事件机制,一切皆在回调中触发(不阻塞).我想缺点或许有正在于此,方法没有返回值,而只能在回调中使用返回结果,会导致事件回调嵌套,代码结构很差. 在jQuery中有一套很好的机 ...
- 『Python CoolBook』C扩展库_其四_结构体操作与Capsule
点击进入项目 一.Python生成C语言结构体 C语言中的结构体传给Python时会被封装为胶囊(Capsule), 我们想要一个如下结构体进行运算,则需要Python传入x.y两个浮点数, type ...
- JavaScript基础四
1.13 Js中的面向对象 1.13.1 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或 ...