3.在Linux中对文本的处理

1.cut

注:grep是行提取命令,cut是列提取命令
cut [选项]+文件名
-f 列号:提取第几列,默认的分隔符就是制表符
n:代表第几列
n-m:表示连续的多列
n,m:表示第n列和m列
n-m,z:表示连续的n-m的列和z列
-d 分隔符:按照指定分隔符分割列
-c:按字符分割


cut -f 1 -d ":" /etc/passwd        #以‘:’进行划分行,选取第一行的信息
cut -f 3 -d "%" + 文件地址          #以‘%’进行划分行,选取第3行的信息
cut -f 4 -d " " + 文件地址          #以空格进行划分行,选取第4行的信息 
cut -c 34 -35   + 文件地址          #将第34到35个字符进行分割

2.printf

注意:printf 不会像 echo 自动添加换行符,我们可以手动添加 \n

printf ' 输出类型和输出格式 ' + 输出内容
(1). %ns: 输出字符串。n是数字,指代输出几个字符
(2). %ni: 输出整数。n是数字,指代输出几个数字
(3). %m.nf: 输出浮点型。m和n是数字,指代输出的整数位数和小数位数。如%8.2f,代表共输出8位数,其
中2位是小数,6位是整数。

(1)[root@localhost ~]# printf '%0.2f\n' 1 2 3 4 5
1.00
2.00
3.00
4.00
5.00
(2)[root@localhost ~]# printf "(%s)" 1 2 3 4 5
(1)(2)(3)(4)(5)[root@localhost ~]#
(3)[root@localhost ~]# printf "%.5d\n" 15
00015

3.cat

3.1基本语法

cat [选项] [文件名]
可以使用 cat --help 查找

常见选项:
-A: 输出所有的隐藏字符
-b:给非空输出行编号,使 -n 失效。
-E:在每行结束显示 $
-n:给所有输出行编号
-s:将所有的连续的多个空行替换为一个空行

3.2对文件操作

cat file1 > file2                #将file1的内容覆盖到file2中
cat file1 >> file2               #将file1的内容追加到file2中
cat file1 file2 > file3          #将file1和file2的内容合并覆盖到file3中
cat file1 file2 >> file3         #将file1和file2的内容合并追加到file3中
 cat >file1 <<EOF
> 文件内容
> EOF                            #将文件内容写入file1中

4.paste

paste常用来合并文件
paste [参数] [文件1] [文件2]
d 默认域的分隔符是空格或tab键,设置新的域分隔符
-s 将每个文件粘贴成一行
-- 从标准输入中读取数据
paste file1 file2               
paste -d : file1 file2    #设置域分隔符为:粘贴成新的文件:

5.vimdff

vimdiff                          #对比两种文件
vimdiff -o file1 file2           #对比两种文件,O是横向对比,o是竖向对比
Ctrl-w, w                        #在两个窗口进行跳转
##可以使用 d, p (即 diff put)命令,将当前差异点中的内容覆盖到另一文件中的对应位置。

6.diff

diff 【选项】 源文件(夹) 目的文件(夹)
diff --help

常见选项:
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次
比较,包括子目录文件。
-b 忽略空格数目的不同
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
-W 在使用-y参数时,指定栏宽
-y 以并列的方式显示文件的异同之处。
-e 此参数的输出格式可用于ed的script文件。

eg:
diff -u file1 file2                #统一格式后输出
diff -c file1 file2                #上下比较
                                       
diff -e file1 file2 >f.patch       #将两个文件的异同之处输入到f.patch中
echo "w" >> f.patch                #w代表write写指令
ed - file1 <f.patch                #ed需要提前下载,是个打补丁的小工具,将f.patch补丁文件输入                                    
                                    file1后,和file2内容一样

7.patch

patch命令一般让用户利用设置修补文件的方式,修改。就是

patch [option] [origfile] [patchfile]


-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次
比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
-b 备份每一个原始文件
-p0 指定补丁文件的层级为 0,表示直接应用补丁文件,不进行任何层级检查。
-p1 指定补丁文件的层级为 1,表示将补丁文件应用于第一层目录中的文件。如果补丁文件不存在于第一层目
录中,则应用失败。
-E 选项说明如果发现了空文件,那么就删除它
-R 选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成
老版本)


eg:
diff -u f1 f2 >f.patch                    #将补丁打入f.patch
patch -p0 f1<f.patch                      #产生p0层级的补丁,并作用于f1
patch -Rp0 f1 <f.patch                    #回退补丁
  

8.grep

grep [OPTIONS] PATTERN [FILE…]
grep --help

--color=auto 对匹配到的文本着色显示
-m # 匹配#次后停止
-v 显示不被pattern匹配到的行,取反
-i 忽略字符大小写
-n 显示匹配的行号
-o 仅显示匹配到的字符串(感兴趣的内容)
-q 静默模式,不输出任何内容
-A # after,后#行
-B # before,前#行
-C # context,前后各#行
-e 实现多个选项间的逻辑or关系,如:grep -e 'cat' -e 'dog' file
-w 匹配整个单词
-E 使用ERE,相当于Egrep,扩展正则表达式
-F 不支持正则表达式,相当于fgrep
-f file 根据模式文件处理
-r 递归目录,不处理软链接

grep -2 root /etc/pssswd                    #过滤出包含root行以及前后2行的内容
grep -e root -e mail /etc/passwd            #过滤出包含root或者mail的行
grep -m1 'root' /etc/passwd                 #找到包含root的行就结束
grep -v 'root' /etc/passwd                  #找出不包含root的行
grep -i 'root' /etc/passwd                  #找到忽视大小写root的行
grep -w 'root' /etc/passwd                  #找到匹配root这个单词的行
grep -nA 4 'root' /etc/passwd               #显示匹配root的行,并且显示后面4行内容,并且显示        
                                             行号


ip addr |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"  #匹配系统IP地址

9.sort

sort [选项] filename
-u :去重
-n :以数值来排序
-o :将结果写入原文件
-r :降序
-t :指定分割符
-k :指定列
-R: 随机排序


sort -u file1                                 #对file1中的内容进行去重
sort -n file1                                 #将file1中的内容以数值进行升序排列
sort -n file1 -o file2                        #将file1的内容进行升序排列后写入到file2中
sort -r file1                                 #降序排列
sort -n -t: -k3 passwd                        #指定以:为分隔符升序排列

10.uniq

uniq [选项] [filename]
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数
-u :只显示不重复的行
-d : 显示重复的行

11.tee

[root@localhost ~]# echo "abc" |tee /data/test.log
[root@localhost ~]# cat <<EOF |tee .mailrc
> 内容
> EOF

##重定向目标,在使用cat和tee时会将输入内容打印出来

12.wc

wc [-clw] filename
-c或--bytes或--chars 只显示Bytes数。
-l或--lines          只显示列数。
-w或--words          只显示字数

13.tr

tr
1. 默认选项。就是没有任何选项的时候,tr默认为替换操作,就是将string1在文件中出现的字符替换为
string2中的字符,这里要注意的是替换关系。
2. -d选项,删除文件中所有在string1中出现的字符。
3. -s选项,删除文件中重复并且在string1中出现的字符,只保留一个。
4. -c选项 用SET2替换SET1中没有包含的字符
eg: cat passwd | tr “root” “ROOT”,这个是一个字符转换
其中的字符串一般是以下形式:
1. [a-z] 或者 [:lower:]a-z 内的字符组成的字符串。
2. [A-Z] 或者 [:upper:]A-Z 内的字符组成的字符串。
3. [0-9] 或者 [:digit:] 数字串。
4. [:alnum:] 所有的字母和数字
5. [:alpha:] 字母
6. [:blank] 匹配所有的空白
7. [:space:] 所有的横向或纵向的空白
8. \octal 一个三位的八进制数,对应有效的 ASCII 字符。
9. [O*n] 表示字符 O 重复出现指定次数 n 。因此 [O*2] 匹配 OO 的字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值