linux 常用文本操作相关命令
平时工作经常会对文本进行相关操作,包括读写、替换、统计等等,借此整理和学习一下有关命令。
1. cat 查看文件中的内容, -n 查看时为每一行加编号;
-b 和-n类似,只不过对于空白行不编号;
2. head file 显示文件头的内容,默认显示10行,加 -n 可以显示指定的行数;
3. tail file 显示文件尾的内容,默认显示10行,加 -n 可以显示指定的行数;
tail -n 20 file 显示文件后20行;
tail -f /var/log/messages 实时显示系统的日志信息;
more file 分屏显示文件的内容;
less file 分屏显示文件的内容,在more的基础上可以上下翻页;
4. diff 比较两个文件内容的不同,报告文件的差异;
-b 忽略文件中空格造成的不同 -B 忽略文件中空行造成的不同;
-l 忽略文件中的大小写造成的不同;
例如:diff file1 file2 ; diff -B file1 file2 ;
5. uniq 出除文件中重复的行; uniq file 可以将文件file中相临的重复行去除;
6. wc 用来统计文本中的行数,词数,字数;
-l 用来统计行数;
-w 用来统计词数;
-c 用来统计字数;
wc -l /etc/passwd 可以统计passwd文本中的行数
linux 下 读取某个文件的某一行或者某几行
查看文件song.txt的第190行到196行,
sed -n '190,196p' song.txt
如果查看某一行用
sed -n '190,1p' song.txt即可
sed -n 'a,bp' song.txt读取自第a行到第b行的数据
if(a > b ) return 第a行
Find命令和Sed命令详解
命令格式:
find pathname -options 【-print -exec -ok】
pathname find 命令所查找的目录路径;
-print 将匹配的文件输出到标准输出;
-exec 对匹配的文件执行该参数所给的shell命令,命令格式给‘command’ {} \;{}和\;之间有空格;
-ok 和-exec的作用相同,只是以更安全的模式来执行参数,但执行每个命令前都会给用户提示是否执行;
-options 命令参数
-name 按照文件名查找文件;
-perm 按照文件权限查找文件;
-prune 使用该命令使find命令不在当前指定目录中查找,如果同时使用-depth选项,它将被find忽略;
-user 按照文件属主查找;
-group 按文件属组查找;
-mtime -n +n 按照文件的更改时间查找,-n表示文件更改时间距现在n天以内,
+n表示文件更改时间距现在n天以前;
-nogroup 查找无有效所属组的文件,即该文件所属的组不在/etc/group
-nouser 查找无有效属主的文件,即该文件所在的主不在/etc/passwd;
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件;
-type 查找某一类型的文件
b 块设备文件
d 目录
c 字符设备文件
p 管道文教案
l 符号链接文件
f 普通文件
实例:1、使用ls -l命令列出所匹配到的文件
#find 。 -type f -exec ls -l {} \;
2、删除/logs目录中更改时间在5日以前的文件
#find logs -type f -mtime +5 -exec rm {} \;
该命令在执行的时候直接删除匹配的文件,安全性不高;
#find logs -type f -mtime +5 -exec -ok rm {} \;
该命令在执行的时候会提示用户是否要删除该文件,按Y删除文件,N不删除该文件。
3、使用find命令查找passed文件中是否包含user1用户;
#find /etc -name “passwd*” -exec grep “user1” {} \;
4、查找当前目录中文件属主有读写权限,并且属组和其他用户有读权限;
#find . -type f -perm 644 -exec ls -l {} \;
5、查找系统中所有文件长度为0的不同文件,并列出它的路径;
#find / -type f -size 0 -exec ls -l {} \;
6、查找当前文件系统中所有目录并排序;
# find . -type d |sort
7、删除当前目录中访问时间在7天以前的文件,并且含有三个数字后缀的log文件
#find . -name “admin.log[0-9][0-9][0-9]” -atime -7 -ok rm {} \;
二、xargs命令详解
在使用find的命令时-exec选项处理匹配文件的信息,但是有些系统文件对exec的命令长度有限制,
在运行命令几分钟后,可能出现溢出错误信息,通常的错误信息为“参数列太长”或“参数列溢出”,这时候用sargs
就可以解决该问题。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,这样就可以处理
最先获取的一部分文件,然后是剩余的并继续下去。
实例:1、查找系统中的每个普通文件,然后用xargs命令测试它们分别属于那类文件;
#find . -type f -print | xargs file
2、把内存信息转储问(core dump),然后把结果保存到/tmp/core.log文件中;
#find / -name “core” -print | xargs echo “” >/tmp/core.log
3、查找当前目录下所有用户具有读、写和执行权限的文件,并收回其他用户的写权限;
#find . -perm -7 -print | xargs chmod o-w;
4、搜索当前目录下所有普通文件中包含hostname的字符;
#find . -type f -print | xargs grep “hostname”或
#find . -name \* -type f -print | xargs grep “hostname”
5、查找/apps目录下的文件,但不查找/apps/bin目录下查找;
#find /apps -path “/apps/bin” -prune -o -print
三、sed命令详解
sed用法 sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文件拷贝。可以在命令行输入sed命令,
也可以在一个文件中写入命令,在使用sed时,sed并不于初始化文件打叫道,它操作的只是一个拷贝,然后所有的改动
如果没有重定向到一个文件,将输出到屏幕。因为sed是一个非交互性编辑器,必须通过行号或正规表达式指定要改变
的文本行。
1、sed怎么读取数据:sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后
读命令行或脚本的第一命令,并使用这些命令查找模式或定位行号编辑它,重复此过程命令结束。
2、调用sed:调用sed有三种方式在命令行键入命令;将sed命令插入脚本文件,然后调用sed;将sed命令插入脚本文件,
并使sed脚本可执行。
2.1sed命令格式:
sed [选项] sed命令输入文件 【命令行在使用sed时,实际命令要加单引号。sed也允许加双引号】
sed [选项] -f sed脚本文件输入文件
sed选项如下:
n 不打印 【sed不编辑行到标准输出,缺省为打印所有的行】
p 命令可以用来打印编辑行
c 下一命令是编辑命令,使用多项编辑时加入此选项,如果只用到一条sed命令,此选项无用,但指定它也没有关系
f 如果正在sed脚本文件,使用此选项,此选项通知sed一个脚本文件支持所有的sed命令
sed -f myscript.sed input_file 【myscript.sed即为支持sed命令的文件】
2.2保存sed输出
由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件即可,例如:
#sed ’some-sed-commands‘ input-file >myoutfile
2.3使用sed在文件中查询文本的方式
sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本
1.使用行号,可以是一个简单数字或一个行号范围
2.使用正规表达式
使用sed定位文本的一些方式:
x (x为行号,如1
x,y (表示行号范围从x到y行,如2,5表示从第2行到第5行
/pattern/ (查询包含模式的行。如/disk/或/[a-z]/
/pattern/pattern/ (查询包含两个模式的行,例如/disk/disks/
/pattern/ ,x (在给定行号上查询包含模式的行。例如/ribbon/,3
x,/pattern/ (通过行号或模式查询匹配行。例如3,/vcd/
x,y!查询不包含指定行号x和y的行。例如1,2!
2.4基本sed编辑命令
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加新文本信息
i\ 在定位行号后插入新文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 冲另一个文件中读取文件
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
| 显示与八进制ASCII代码等价的控制字符
{} 在定位执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句。
sed识别任何基本正规表达式和模式及其匹配规则,如果要定位一特殊字符,必须使用(\)屏蔽其特殊含义
例如:1.打印第2行
#sed -n ‘2p’ temp.txt
2.打印指定范围,打印1到3行,用逗号分割符号
#sed -n ‘1,3p’ temp.txt
3.使用行号和模式结合使用,显示temp.txt最后一行中的单词the,
# sed -n ‘/the/p’ temp.txt
4.使用模式与行号的混合方式剔除第一行,和格式为line_number,/pattern/。都好用来分隔行号
与模式开始部分,为了达到预期结果,使用4,/the/。意思只在第四行查询模式the。
#sed -n ‘4,/the/p’ temp.txt
5.匹配元字符$前,必须使用反斜杠\屏蔽特殊含义。模式为/\$/p
#sed -n ‘/\$/p’ temp.txt
6.显示整个文件,只需将行号范围设为第一行到最后一行1,$。$意为最后一行。
#sed -n ‘1,$P’ temp.txt
7.显示任意字符,匹配任意字符,后跟任意字符的0次或多次重复,并以ing结尾
#sed -n ‘/.*ing/p’ temp.txt
8.打印匹配的的字符并显示该行行号
#sed -e ‘/music/=’ temp.txt
9.在匹配的字符串后插入新的字符串,使用附加操作即使位置,a\,a\通知sed这是一个附加操作
#sed “/abcd/a\ABCD” temp.txt
10.替换文本 替换命令用替换模式指定模式,格式为
[address[,address]] s/pattern-to-find/replacerment-pattern/[gpwn]
s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后replacement-pattern替换它。
g: 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p: 缺省sed将所有被替换写入标准输出,加p选项将使-n选项无效;
n: 不打印输出结果;
w: 文件名使用此选项将输出定向到一个文件
例如:替换night为NIGHT,首先查询night,然后用文本NIGHT替换它
#sed ‘s/night/NIGHT/’ temp.txt
linux 常用文本操作相关命令的更多相关文章
- Linux(三) - 文件操作相关命令
Ctl-A 光标移动到行首 Ctl-C 终止命令 Ctl-D 注销登录 Ctl-E 光标移动到行尾 Ctl-U 删除光标到行首的所有字符,在某些设置下,删除全行 Ctl-W 删除当前光标到前边的最近一 ...
- 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令
Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...
- linux 目录结构及其相关命令
目录也是一个文件,它的唯一功能是用来保存文件及其相关信息.所有的文件,包括普通文件.设备文件和目录文件,都会被保存到目录中. 主目录 登录后,你所在的位置就是你的主目录(或登录目录),如果是root用 ...
- Linux Bash文本操作之sed篇其二
上一篇总结了sed的基础应用(Linux Bash文本操作之sed篇其一),内容实在有够多,这里再对稍微高级一些的用法做一个整理,以方便使用时查阅. 查看文本内容 示例1表示在第一到第四行匹配到的行后 ...
- Linux 查看磁盘空间 相关命令
Linux 查看磁盘空间 相关命令 实际工作中,我们经常需要查看磁盘空间的使用情况,以防止磁盘空间不足,导致的系统崩溃或者服务异常等问题. 常用的磁盘空间查看命令如下: 1.查看磁盘空间的整体使用情况 ...
- Unix/Linux常用文件操作
Unix/Linux常用文件操作 秘籍:man命令是Unix/Linux中最常用的命令,因为命令行命令过多,我相信每个人都会经常忘记某些命令的用法,man命令就可以显示一个命令的所有选项,参数和说明, ...
- IDEA环境下GIT操作浅析之二-idea下分支操作相关命令
上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...
- [ SHELL编程 ] 编程常用的ORACLE相关命令
本文主要描述shell编程中常用的Oracle相关命令. 1.sqlplus -L/-S参数 sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提 ...
- Linux常用文本处理命令
1.grep命令 echo 'zero\nzo\nzoo' | grep 'z.*o':将匹配以'z'开头以'o'结尾的所有字符串 echo 'zero\nzo\nzoo' | grep 'z.o': ...
随机推荐
- 133.throw机制 抛出类类型
#include <iostream> using namespace std; //try尝试执行,抛出throw,throw之后语句不再执行 //catch处理throw的异常 voi ...
- 使用TensorBoard可视化工具
title: 使用TensorBoard可视化工具 date: 2018-04-01 13:04:00 categories: deep learning tags: TensorFlow Tenso ...
- 今天犯的一个错误,导致method GET must not have a request body
事件经过: 1.在本地机器运行完全正常的程序,手动人工发包到测试环境上,后台日志频频报method GET must not have a request body. 2.使用postman发送pos ...
- ASP.NET 让ajax请求webform后台方法
$.ajax({ type: "POST", url: ".aspx/getSubjectDirection", data: JSON.stringify({ ...
- PostgreSQL 索引膨胀
索引膨胀,主要针对B-tree而言 索引膨胀的几个来源: 大量删除发生后,导致索引页面稀疏,降低了索引的使用效率: PG9.0之前的版本,vacuum full会同样导致索引页面稀疏: 长时间运行的事 ...
- SQL中一次插入多条数据
SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据. 1. 语法:select 字段列表 into 新表 from 源表 注意事项:此种方法新表是系统自动创建,语句执行前不 ...
- 2,HTTP请求应答返回码
200 OK 请求成功,一般用于Get和Post请求 300 多种选择.请求的资源可包括多个位置,响应的返回一个资源特征与地址的列表用于浏览器(client)选择 Multiple Choices 3 ...
- 如何防止js刷新页面后倒计时改变
1.存入cookie或localstorage(清除浏览器缓存后时间依然改变) 2.存入数据库
- RocketMQ学习笔记(5)----RocketMQ监控平台rocketmq-console-ng的搭建
1. 下载rocketmq-console-ng 官网地址:https://github.com/apache/rocketmq-externals 拉下来之后,使用idea打开rocketmq-co ...
- django 获得请求头
django 获得到的请求头封装在 request 的 META 中,为一个 dict 以下选自官方文档: https://docs.djangoproject.com/zh-hans/2.0/ref ...