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表示每行的字段数

原文地址:https://www.cnblogs.com/ohmyuan/p/10123348.html

时间: 2024-10-31 08:19:38

linux日常命令之三的相关文章

(Linux 日常命令)[20171222]

目的:记录Linux日常所用命令 [20171222]Linux环境下查看硬件组件型号 cat /proc/cpuinfo及lspci 查看CPU [[email protected]-redhat-01 ~]# cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 23 model : 1 model name : AMD Ryzen 7 1700 Eight-Core Processor ->这里就是CPU

Linux 日常命令

http://www.linuxidc.com/Linux/2015-05/117414.htm 1. 命令行日常系快捷键 如下的快捷方式非常有用,能够极大的提升你的工作效率: CTRL + U - 剪切光标前的内容 CTRL + K - 剪切光标至行末的内容 CTRL + Y - 粘贴 CTRL + E - 移动光标到行末 CTRL + A - 移动光标到行首 ALT + F - 跳向下一个空格 ALT + B - 跳回上一个空格 ALT + Backspace - 删除前一个单词 CTRL

Linux日常命令集锦

查看io性能 iostat -d -x -k 1 10 端口是否启动 /usr/sbin/lsof -i:8422 /usr/sbin/tcpdump icmp -n -i eth0 查看是否有大量的ping 查看当前的连接数 netstat -n |awk '/^tcp/ {++S[$NF]} END {for  (a in S) print a,S[a]}' 不中断服务地重启Nginx kill -HUP `cat  /usr/local/nginx/logs/nginx.pid` 查看当前

linux日常管理常用命令--w

linux日常管理常用命令--w 命令:w(linux管理员最常用的命令) [[email protected] ~]# w 14:45:41 up 2 min,  2 users,  load average: 0.10, 0.10, 0.04 USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT root     tty1     -                14:44   54.

Linux之进程管理(2)相关命令之三

Linux之进程管理(2)相关命令之三 (IPC)进程间通信及信号控制命令 kill  killall   kill 命令 kill - terminate a process,Inter Process Communication 进程通信工具,默认为发送终止信号 选项及用法: kill  -l  #显示所有信号CODE及名称 kill  [-SIGNAL]  pid...#指定发送信号给对应pid的进程,不指定信号代码默认为15信号 常见的信号:(注:可以使用man 7 signal打开帮助

Linux日常维护命令

对于程序员来说,掌握一些基本的Linux命令是必不可少的,即使现在用不到,在不久的将来也应该会用到.由于Linux有很多命令,每个命令基本可以用一篇文章介绍,所以本文仅总结一些常用命令的常用用法,如有明显的遗漏或错误,请各位帮忙指出,谢谢! 以下内容基于测试环境:Red Hat 4.5/5 一.服务器硬件配置 1.查看硬盘及分区情况 # fdisk -l 2.查看分区空间使用情况 可以查看各分区大小.已使用.可用.已使用百分比.挂载情况 1)默认单位为K # df 2)可读性更好的显示,如单位M

linux常用命令加实例大全

目  录引言    1一.安装和登录    2(一)    login    2(二)    shutdown    2(三)    halt    3(四)    reboot    3(五)    install    4(六)    mount    4(七)    umount    6(八)    chsh    6(九)    exit    7(十)    last    7(十一)    动手练习    7二.文件处理    9(一)    file    9(二)    mkd

Linux小命令(4)ls

Linux命令(4)ls ls是列出文件或者目录的命令,ls是Linux下最常用的命令.ls就是list的缩写,缺省下ls用来打印当前的目录清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单了.通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限,ls命令在日常的Linux操作中用的很多. 下面举了几个常用的ls的命令.详细的可以通过#man ls去查O(∩_∩)O~ ? 命令格式: #ls [-la1Rh] [路径] ? 常用参数: #ls 列出目录和文件

炫酷的Linux终端命令大全

今天给大家分享用了十年的Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章我将向大家展示一系列的Linux命令.工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我成长道路上绊住我. 1.命令行日常系快捷键 如下的快捷方式非常有用,能够极大的提升你的工作效率: CTRL + U -剪切光标前的内容 CTRL + K -剪切光标至行末的内容 CTRL + Y -粘贴 CTRL + E -移动光标到行末 CTRL + A -移动光标到行首 ALT + F -跳向下一个空格 A