一、换行符

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日常命令之三的更多相关文章

  1. (Linux 日常命令)[20171225]

    目的:记录Linux日常所用命令 [20171222]Linux环境下查看硬件组件型号 cat /proc/cpuinfo及lspci 查看CPU [root@t-redhat- ~]# cat /p ...

  2. linux 日常命令(磁盘空间)

    df –hl 在windows下可以很方便的查看磁盘空间的.但是到了Linux查看磁盘空间,你可能就有点摸不着头脑了,呵呵.不要急,我这就要给你解决这个问题. Df命令是Linux查看磁盘空间系统以磁 ...

  3. linux日常命令之二

    ps -ef 查看当前系统所有进程,ps 进程查看命令,-e 显示所有进程,-f 全格式. free -h 查看系统实际使用内存的情况. 显示格式为: total       used       f ...

  4. linux日常命令之一

    zcat Linux中,cat命令可查看文本内容: 对于压缩包内的文本,可使用zcat命令,在不解压的情况下查看文本内容: iconv file -i 可查看文件字符集: iconv为字符集转换命令, ...

  5. Linux 日常命令

    命令 介绍说明  pwd  打印出当前所在目录  mkdir  创建一个目录  rmdir  删除一个目录  rm  删除文件或目录 -r:删除目录时必须加上  cp  复制一个文件或目录 -r:复制 ...

  6. Linux日常命令使用记录

    scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入. 在服务器104.238.161.75上操作,将服务器 ...

  7. deepin Linux 日常命令、插件、方法等汇总【更新中】

    查看系统编码: dawn@dawn-PC:~$ locale LANG=zh_CN.UTF- LANGUAGE=zh_CN LC_CTYPE="zh_CN.UTF-8" LC_NU ...

  8. 73条日常Linux shell命令汇总,总有一条你需要!

    转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...

  9. linux日常---1、linux下安装、查看、卸载包常用命令

    linux日常---1.linux下安装.查看.卸载包常用命令 一.总结 一句话总结: 对比学习 1.linux如何查看系统中安装的程序? rpm -qa   # 查看所有安装的软件包 2.linux ...

随机推荐

  1. Python制作AI贪吃蛇

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都 ...

  2. 剑指offer(17)树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目分析 分析如何判断树B是不是树A的子结构,只需要两步.很容易看出来这是一个递归的过程.一般在树 ...

  3. #map+LCA# Codeforces Round #362 (Div. 2)-C. Lorenzo Von Matterhorn

    2018-03-16 http://codeforces.com/problemset/problem/697/C C. Lorenzo Von Matterhorn time limit per t ...

  4. 转载:如何搭建turn server 在centos7上。

    https://www.cnblogs.com/idignew/p/7440048.html

  5. Qt 从菜单栏打开文件

    Qt从菜单栏的下拉菜单选择文件 构造函数中设置打开动作信息 //打开文件 m_menu = ui.menu; // m_menu->menuAction = new QAction(QIcon( ...

  6. mybatis分页插件PagePlugin

    查询的参数对象里面继承PageInfoWrapper类(也可以不继承这个类,但要保证查询参数对象里面必须要有一个PageInfo属性) 分页信息都在PageInfo这个类里,查询的时候,分页参数,填充 ...

  7. Bellman-Ford算法模板题

    POJ 3259 虫洞(Bellman-Ford判断有无负环的问题) 描述: 在探索他的许多农场时,Farmer John发现了许多令人惊叹的虫洞.虫洞是非常奇特的,因为它是一条单向路径,在您进入虫洞 ...

  8. PHP7&Swoole源码安装

    PHP7源码安装 1.获取PHP http://php.net/downloads.php 2.解压 tar -xjvf php-7 (根据压缩包的格式修改命令 如果时间戳有问题 -m) 3. ./c ...

  9. 开机自动启动WEB服务,共享目录。

    最近工作中,需要共享一个目录,每次重启总要手动执行一下  nohup python -m SimpleHTTPServer 8000这个命令,想着实现让它开机自动启动,就一劳永逸了. 手动步骤如下: ...

  10. 整理整理Linux命令

    自用.. 1. 查看当前文件目录下,所有文件消耗的磁盘容量 du -h ./ 2. 系统中文件的使用情况 df -h 和du -h显示磁盘大小不一致可能是因为使用rm删除时,文件存在link,没有删除 ...