RHCE学习<14>熟悉Bash常用文本处理工具用法

1、grep命令:查找文件里符合条件的字符串

一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

语法格式: grep [options]

-i:ignore-case 忽略大小写差别

-c:count 只打印匹配的总行数,不显示匹配的内容信息

-n:line-number 在匹配的行前面打印行号

-v:revert-match 反检索,只显示不匹配的行

-r:recursion递归地,读取每个文件夹下的所有档案

-l :不显示平常一般的输出结果,只显示符合的文件名称

2、awk命令:一个强大的文本处理工具,逐行扫描,从第一行到最后一行

使用语法:awk 'pattern{action}' filename

pattern:正则表达式

action:输出语法

你可以省略pattern和 action之一,但不能两者同时省略,当省略pattern时没有样式匹配,表示对所有行(记录)均执行操作,省略action时执行缺省的操作——在标准输出上显示。

语法格式:awk [ -F re] [parameter...]

-F re:允许awk更改其字段分隔符

parameter: 该参数帮助为不同的变量赋值

-v:定义变量

-f:指定脚本文件

三种调用方式:

1、awk命令行

2、使用-f选项调用awk程序,例如:awk -f progfile file ,其中progfile是指定一个文本文件

3、利用命令解释器调用awk程序,需要在awk脚本声明调用方式,例如:#!/bin/awk -f

命令行方式使用内容过滤:

[root@test ~]# awk '/root/' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

#显示分隔符指定列(1列),分隔符默认是空格,$1是显示分隔符前面一列

#显示test文件中匹配123的行

[root@test ~]# awk '/123/ {print $1}' test

#显示所有以a或f开头的行

4、sed命令:一种在线编辑器,它一次处理一行内容

处理时,把当前处理的行存储在临时缓冲区中,称为'模式空间'(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

常用参数:

i 插入

s 替换

e 多点编辑

d 删除

a 追加到行后面

g 全部替换,无g只替换每行第一个

q 退出

#将所有包含aaa替换为jjj

sed 's/aaa/jjj/' test

#把这行注释去掉,替换文本

sed -i 's/#ServerName www.example.com:80/ ServerName 192.168.0.202:80/g'

将所有包含/var/www/html/替换为/opt/web/,分隔符'/'可以用别的符号代替,比如 ','  '_' '|' 等

sed -i s/\/var\/www\/html/\/opt\/web/' /etc/httpd/conf/httpd.conf

等同于:

sed -i 's_/var/www/html/_/opt/web/_' /etc/httpd/conf/httpd.conf

#插入一行到391行,包括特殊符号'/'

sed -i '391 s/^/AddType application\/x-httpd-php .php.html/' httpd.conf

#只打印第一行数据

sed -n '1p' /etc/passwd

#打印包含root的行,禁止默认输出

sed -n '/root/p' /etc/passwd

#删除13行

sed -i '13d' /etc/passwd

#删除13行到最后一行

sed -i '13,$d' /etc/passwd

#将包含uucp的行删除

sed -i '/uucp/d' /etc/passwd

5、find命令:查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等

用法:find [path] [options] [条件]

Path:查找路径

Options:选项

例如:

-name:按照文件名查找文件

-mtime:按照文件的更改时间来查找文件,后跟-n、+n来表示多少天内和以前

-user:按照文件属主来查找文件

-group:按照文件所属的组来查找文件

-type:查找某一个类型的文件,诸如:b(块设备)、d(目录)、l(符号链接)、f(普通文件)

-size:根据文件大小来查找文件

#在根目录查找更改时间在5日以内的文件

find /tmp -mtime -5

#在/var目录下查找更改时间在3日以前的文件

find /var/ -mtime +3

#查找系统中所有文件长度为0的普通文件,并列出他们的完整路径

find / -type f -size 0 -exec ls -l {} \;

#查找/var/log目录中更改时间在7日以前的普通文件,并删除他们

find /var/log/ -type f -mtime +7 -exec rm {} \;

#找出用户test拥有的文件,并将他们拷贝到/root/test目录中

find / -user test -exec cp {} /root/test \;

6、sort命令:对文件中的各行进行排序

sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较.

格式:sort [选项] 文件

主要选项:

-r:倒序排序,默认是升序。

-n:按数值大小进行排序

-k:KeyDefinition 指定排序关键字。 
-t:Character 指定 Character 作为字段分隔符

-d:使用字典顺序排序。比较中仅考虑字母、数字和空格

-f:将小写字母与大写字母同等对待

-u:去掉重复的行,使文件中的每一行唯一

7、uniq命令:删除文件中的重复行

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

格式:uniq [选项] 文件

主要选项:

-c:显示行号

-d:只显示重复行。

-u:只显示文件中不重复的各行。

8、cut命令:显示文件中每行的指定内容

格式:cut -d 分隔字符 [-cf] fields

-d:后面接的是分隔字符,默认情况下为Tab;

-c:后面接的是第几个字符

-f:后面接的 是第几个区块

#列出/etc/passwd文件中的所有用户,按照升序排列

cut -d : -f 1 /etc/passwd | sort

#显示/etc/passwd文件下uid为0的用户名以及uid。

cut -d : -f 1,3/etc/passwd|grep ':0$'

正则表达式'$'表示以字符结尾,'^'表示以某字符开始。

9、tr命令:从标准输入删除或替换字符,可以看为sed简化软件

常用选项的tr命令格式为:
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个。 
#将小写字符转换成大写

tr 'a-z' 'A-Z' < file

#将文件中删除所有空字符

tr –d ‘\0’< file

#删除文件中shell字符

cat test | tr -d 'shell'

#将文件中所有abc字符替换efg并另存为新文件

cat test | tr 'abc' 'efg' >new file

10、其他文本处理命令

cat:从头开始显示内容,并将所有内容输出

常用参数,-n显示输出的行数编号

tac:从最后一行倒序显示内容,并将所有内容输出

head:默认显示头10行,-n指定显示多少行数

tail:默认显示最后10行,-n指定显示多少行数,-f实时显示内容

more:分屏查看文本文件

less:和more类似,但可以往前翻页

nl:显示时输出行号

wc:计算文件的字节数、单词数和行数

常用参数:-c统计字节数,-l统计行数,-m统计字符数

时间: 2024-12-31 12:11:52

RHCE学习<14>熟悉Bash常用文本处理工具用法的相关文章

Linux中Awk常用文本处理命令用法详解

I. NR,FNR记录当前行 [root@LinuxEA awk]# cat nr1 1 a 2 b 3 c 4 d 5 e [root@LinuxEA awk]# awk '{print FNR}' nr1 1 2 3 4 5 6 [root@LinuxEA awk]# awk '{print NR}' nr1 1 2 3 4 5 6 [root@LinuxEA awk]# awk '{print "行. = " NR " 数据 = " RNR,$0}' nr1

bash常用快捷键和命令

在使用Linux的时候,最常见的终端解释器就是bash了.bash下有很多技巧,我知道这么几个: 0.关于按键模式bash默认的按键模式是emacs风格的.你也可以通过set -i vi设定为vi风格.我用默认的emacs风格的,后面的快捷键基本能上都是它的. 1.历史命令的找回比如一个命令输错了,需要该其中一个地方就好:或者想重复执行之前运行的某命令,那么使用方向键的↑和↓是最好的办法.高端一点的,可以输入部分命令的开头几个字母,然后用Ctrl+R结合方向键找到. 2.光标移动到行首和行尾比如

机器学习-朴素贝叶斯如何自我学习从而对新增的文本类别正确的分类

问题描述 朴素贝叶斯如何自我学习从而对新增的文本类别正确的分类 朴素贝叶斯分类是一种有监督的机器学习方法,准确性严重依赖于样本丰富程度,如何使得贝叶斯分类有自我学习的能力,从而能适应新的文本

PHP程序开发范例学习之表单 获取文本框的值_php基础

<form name="form" method="post" action="login.php"></form> 文本框的用法: <input type="text" name="username" /> 其中input类型包括text.password等类型,HTML5新增了很多的input类型,如果想学习这类的知识可以很好的了解一下,因为分的越细,用的越方便. 看

Linux下常用文本处理命令

Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多.这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准.下面就让我们一起看看这些经典的Linux文本处理命令. 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. tsort 拓扑

Java常用正则表达式验证工具类RegexUtils.java_java

正则表达式常常用来验证各种表单,Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证之良品!你,值得拥有 ^_^ /* * Copyright 2012-2013 The Haohui Network Corporation */ pack

十个不为人知的PS文本排版工具

  众所周知,文本排版对于艺术创作和网页设计都非常重要.Photoshop作为一款功能非常强大的图像处理软件,其也有许多工具可帮助我们更好地完成文本编辑排版工作.这里,我们就可大家分享十个不为人知的Photoshop CC的文本排版工具,希望能对PS初学者带去一些帮助.下面马上开始! Photoshop有许多工具可用于文本排版的高效处理 一.占位符文本 有时,我们需要在没有任何文本副本的情况下完成画面设计工作.作为一个设计师,我们当然会对文本数量做一个估算,但即便如此,我们通常也会在没有最终文本

构想:中文文本标注工具(内附多个开源文本标注工具)

自然语言处理的大部分任务是监督学习问题.序列标注问题如中文分词.命名实体识别,分类问题如关系识别.情感分析.意图分析等,均需要标注数据进行模型训练.深度学习大行其道的今天,基于深度学习的 NLP 模型更是数据饥渴.  最前沿的 NLP 技术往往首先针对英文语料.英文 NLP 的生态很好,针对不同有意思的问题都有不少大规模语料公开供大家研究,如斯坦福的 SQuAD 阅读理解语料.中文方面开源语料就少得多,各种英文 NLP 上的犀利模型和前沿技术都因为中文语料的匮乏很难迁移过来. 另一方面,对于一些

Linux常用的安全工具

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/857907 Linux常用的安全工具 "工欲善其事,必先利其器".作为一个合格的系统管理员,要应对可能发生的安全事件,掌握Linux下各种必须的安全工具是首要大事.本文主要介绍Linux上常用的安全工具,例如,Nmap.Snort.Nesseu等安装.使用和维护知识.通过这些工具管理人员能够了解其系统目前