1. diff用法
diff file1 fil2
- 以后面的文件file2作为标准 比较file1相对于file2来说有什么不同
- < 表示第一个文件中的内容
-
表示第二个文件中的内容
- a表示添加–add
- c表示更改–change
- d表示删除–delete
2.diff比较目录
diff -r /etc/ /tmp/
- 比较的结果是目录中文件的不同 而不是文件内容的不同
3.patch用法
- patch常用来打补丁
patch file2 file2.path
yum instal; patch.x86_64 -y
patch file2 file2.path #再用patch命令打补丁
cat file2
cat file1
用这种方法打补丁 文件会直接被修改成指定文件内容 原文件内容会被覆盖
要留下原文件内容:
cat file3
cat file1
diff -u file3 file1 >file3.path
patch -b file3 file3.path #-b表示保留原文件内容
ls
cat file3.orig #原文件内容
4.cut命令
- cut命令通常用来截取
参数 | 说明 |
---|---|
-c | 指定截取字符的位置 |
-d | 指定分隔符 |
-f | 指定要截取的列 |
- 使用:
cp /etc/passwd .
cut -d : -f 1 passwd #以:为分隔符 截取passwd文件第一列的内容
cut -d : -f 1,3 passwd #以:为分隔符 截取passwd文件第一列和第三列的内容
cut -d : -f 3- passwd #以:为分隔符 截取passwd文件第三列及后面所有的内容
cut -c 1-3 passwd #截取passwd文件第一个字符到第三个字符的内容
cut -c 1,3 passwd #截取passwd文件第一个字符和第三个字符的内容
5.sort和uniq
- sort命令通常用来排序
- uniq命令对重复字符做相应的处理
参数 | 说明 |
---|---|
sort -n | 纯数字排序 |
sort -r | 倒序 |
sort -u | 去掉重复数字 |
sort -o | 输出到指定文件中 |
sort -t | 指定分隔符 |
sort -k | 指定要排序的列 |
uniq -u | 显示唯一的行 |
uniq -d | 显示重复的行 |
uniq -c | 每行显示一次并统计重复次数 |
- 使用:
sort numbers #只对数字的第一位正向排序
sort -n numbers #纯数字正相排序
sort -rn numbers #纯数字倒序
sort -rn numbers -o NUM S #将排序结果输出到指定文件中
sort -u numbers #去掉重复数字并只对数字的第一位正向排序
sort -urn numbers #去掉重复数字并纯数字倒序
sort -n numbers | uniq -c #每行显示一次并统计重复行数
sort -n numbers | uniq -d #显示重复的行
sort -n numbers | uniq -u #显示唯一的行
6.seq命令的用法
- seq:squeue 是一个序列的缩写
- 主要用来输出序列化的东西
- 用法:
seq ... 尾数
seq ... 首数 尾数
seq ... 首数 增量 尾数
参数 | 说明 |
---|---|
-f (- -format) | 格式:使用printf样式的浮点格式 |
-s(- -separator) | 字符串:使用指定字符串分隔数字(默认使用:\n) |
-w(- -equal-width) | 自动补位:在列前添加0使得宽度相同 |
- -help | 显示帮助信息并退出 |
- -version | 显示版本信息并退出 |
- 使用:
seq 5
seq -s '@' 5 #-s指定分隔符
seq -s '#' 5
seq -s ' ' 5
seq -s '' 5
seq -w 10 #-w自动补位
seq -10 2 4 #打印从-10到4的序列 增量为2
seq -f "%03g" 98 103 #以0补位(3表示共3位)
seq -f "%3g" 98 103 #共3位 默认以空格补位
7.join命令
- 1.连接
- 内连接:将两个文件中每列第一个字符相同的行合并
- 全连接(显示左边和右边所有记录)
join file1 file2 #内连接:将两个文件中每列第一个字符相同的行合并
join -a1 file1 file2 #显示左边文件中的所有记录(右边文件中没有匹配的不显示)
join -a2 file1 file2 #显示右边文件中的所有记录(左边文件中没有匹配的不显示)
join -a1 -a2 file1 file2 #全连接(显示左边和右边所有记录)
- 2.指定输出字段
- -o:指定输出字段
join -o 1.1 file1 file2 #指定输出第一个文件的第一个字段
指定输出多个字段:
join -o 1.1 2.2 file1 file2 #指定输出第一个文件的第一个字段和第二个文件的第二个字段
- 3.指定分隔符
- -t:指定分隔符
- 在下面的例子中,如果不指定分隔符,它会按照第一列的内容连接(ABCD…)
join -t ':' file3 file4 #以:为分隔符连接
- 4.不匹配的行输出
- -v 1:不匹配的行输出
join -v 1 -a1 -a2 file1 file2 #-v后面的1不能省略
8.tr命令的用法
- tr命令主要功能是转化
参数 | 说明 |
---|---|
-c -C | 字符串替换,要求字符集为ASCII |
-d | 删除字符 |
-s | 删除所有重复出现字符序列,只保留第一个(即将重复出现字符压缩为一个字符串) |
-t | 删除第一字符集较第二字符集多出的字符 |
参数 | 说明 |
---|---|
[:gidit:] | 所有数字 |
[:graph:] | 所有可打印字符,不包括空格 |
[:lower:] | 所有小写字符 |
[:upper:] | 所有大写字符 |
[:print:] | 所有可打印字符,包括空格 |
[:punct:] | 所有标点字符 |
[:space:] | 所有横向或纵向的空白 |
- 使用:
9.xargs命令
- 1.xargs的功能
- xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具
- xargs可以将管道或标准输入数据转换成命令行参数,也能够从文件的输出中读取数据
- xargs也可以将单行或多行文本输入转换为其他格式(多行变单行,单行变多行)
- xargs默认的命令是echo,这以为这通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代
- xargs存在的意义:
它能够捕捉一个命令的输出,然后传递给另外一个命令
由于很多命令不支持|管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
例如:
- 2.xargs的使用
- 例:
cat test.txt | xargs #规范文件中的内容
cat test.txt | xargs -n4 #-n4指定每行4个字符
- 例:
echo "hahaDhahaDhahaDhaha" | xargs -dD #删除字符D
echo "hahaDhahaDhahaDhaha" | xargs -dD -n2 #指定每行2个字符
echo "hahaDhahaDhahaDhaha" | xargs -dD -n3
- 例3:
echo "one two three four"
echo "one two three four" | mkdir
echo "one two three four" | xargs mkdir
ls
- 例4:
[root@localhost 12]# echo "one two three four" | xargs -p touch #-p询问是否执行指定动作
touch one two three four ?... #不输入yes就不会执行
[root@localhost 12]# ls
file1 file2 four one test.txt three two
[root@localhost 12]# echo "one two three four" | xargs -p touch
touch one two three four ?...
[root@localhost 12]# echo "one two three four" | xargs -t rmls #-t不询问 直接执行指定动作
rmls one two three four
xargs: rmls: No such file or directory
[root@localhost 12]#
- 例5:
sh -c "echo filel;mkdir file"
ls
rm -fr file
vim 1.txt
cat 1.txt | xargs -I name sh -c 'echo name;mkdir name'
ls