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
的字符串。