bash Shell 总结《三》

前端之家收集整理的这篇文章主要介绍了bash Shell 总结《三》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

cat <-- 显示文件的全部内容,连接多个文件@H_502_1@

head <-- 获取文件头部的内容@H_502_1@

tail <-- 获取文件尾部的内容@H_502_1@

grep <-- 在文件中查找特定的内容@H_502_1@

sed <-- 强大的流编辑器,能做增加删除、改动等操作@H_502_1@

awk <-- 模式扫瞄和处理工具,是一门语言@H_502_1@

cut <-- 从行中抽取部分内容@H_502_1@

wc <-- 计算数据的字节数,字符数,单词数,行数@H_502_1@

sort <-- 排序工具@H_502_1@

uniq <-- 去除重复工具@H_502_1@

tr <-- 对字符做转换,删除,缩减操作@H_502_1@

tac <-- 把文件中的内容按行号反序打印。@H_502_1@

rev <-- 把文件中的行左右反转@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

cat,concatinate,把一个或者多个文件内容按顺序连接起来,输出到标準输出。@H_502_1@


@H_502_1@

cat 12.pub <-- 显示文件 12.pub 的内容到屏幕上@H_502_1@

cat -n 12.pub <-- 显示文件内容,并且加上行号@H_502_1@

cat -A file <-- 同时打印出一些不可见的字符和位置标记@H_502_1@


@H_502_1@

# 合并文件@H_502_1@

cat 12.pub 13.pub 14.pub 15.pub > /home/czl/.ssh/authorized_keys@H_502_1@

cat /etc/* | wc -c@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

head,读取文件的头部@H_502_1@


@H_502_1@

head -n 3 /etc/passwd <-- 读取文件/etc/passwd 的前面三行@H_502_1@

head -c 3 /etc/passwd <-- 读取文件/etc/passwd 的前面三个字节@H_502_1@

head -c 10m /dev/zero > f1 <-- 创建一个10M的文件@H_502_1@

head -n -1 file <-- 丟弃 file 的最后一行@H_502_1@

head -c -3 file <-- 丟弃 file 的最后3 个字节@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

tail,读取文件的尾部@H_502_1@


@H_502_1@

tail -n 3 /etc/passwd <-- 读取文件/etc/passwd 的后面三行@H_502_1@

tail -c 3 /etc/passwd <-- 读取文件/etc/passwd 的后面三个字节@H_502_1@

tail -n +28 /etc/passwd <-- 从第28行开始读取,直到文件尾部(丟弃头部的27行)@H_502_1@

tail -c +28 /etc/passwd <-- 从第28字节开始读取,直到文件尾部(丟弃头部的27字节)@H_502_1@

tail -f /etc/passwd <-- 跟踪文件尾部内容的变化,常用来观察日志文件的变化,非常实用@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

grep,从文件中抽取符合某种格式的行@H_502_1@


@H_502_1@

常用选项:@H_502_1@

-i <-- 忽略大小写@H_502_1@

-l <-- 输出符合条件的文件名@H_502_1@

-n <-- 显示匹配记录的行号@H_502_1@

-c <-- 输出匹配的记录的总数@H_502_1@

-o <-- 输出匹配的那部分,而不是整行@H_502_1@

-w <-- 匹配单词的边界@H_502_1@

-E <-- 使用扩展的正则表达式@H_502_1@

-A <-- 输出下文(after)@H_502_1@

-B <-- 输出上文(before)@H_502_1@

-C <-- 输出上下文(context)@H_502_1@

-R <-- 递归,用于搜索目录下的文件@H_502_1@

-q <-- 不输出结果,常用于条件测试@H_502_1@

-v <-- 显示不符合条件的结果@H_502_1@


@H_502_1@

操练grep@H_502_1@


@H_502_1@

1. 把/etc/passwd 中包含nobody 的行列出来@H_502_1@

2. 把/etc/passwd 中的nobody 列出来@H_502_1@

3. 把/etc/passwd 中的nobody 列出来,不区分大小写@H_502_1@

4. 用root 身份查找,/etc/sysconfig 目录里面,哪个文件包含了字符串AUTOSWAP@H_502_1@

5. 找出/etc/passwd 文件中bash 所在的行的行号@H_502_1@

6. 找出/etc/passwd 中有多少个nobody,不区分大小写@H_502_1@

7. 找出/etc/passwd 文件中有多少行包含了单词bin@H_502_1@

8. 打印出/etc/passwd 文件中包含gdm 的行,同时打出其下面2行@H_502_1@

9. 找出/etc/passwd 中不包含bash 的行@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

sed,流编辑器,常常用于脚本中@H_502_1@


@H_502_1@

基本格式包含以下部分:@H_502_1@

1. 指定范围,不明确指定的话,默认是所有的行,可以是行号,或者正则表达式@H_502_1@

2. 指定动作,常用的有d,s,p,i,a@H_502_1@

d: delete,删除@H_502_1@

s: substitute,替换@H_502_1@

p: print,打印@H_502_1@

i: insert,在前面插入@H_502_1@

a: append,在后面添加@H_502_1@


@H_502_1@


@H_502_1@

示范:@H_502_1@


@H_502_1@

删除某些行 (3d)@H_502_1@

替换某些字符 (s/abc/ABC/)@H_502_1@

删除某些字符(删除就是替换成空,s/abc//)@H_502_1@

输出某些行 (-n 3,10p)@H_502_1@

在某行的前面添加一行 (3i)@H_502_1@

在某行的后面添加一行 (3a)@H_502_1@

通过管道随意插入添加 ( sed -e 1i xxx -e 3i yyy)@H_502_1@


@H_502_1@


@H_502_1@

关于替换命令的分割符的选择@H_502_1@


@H_502_1@

命令 sed 's/a/A/' 中 sed 执行了替换动作,把第一个小写a 替换成大写A,在这里,分隔符斜杠/ 可以换成任何其它的字符,需要注意的是,如果需要处理的数据中包含了分隔符,就必须对该字符进行转义,举例如下:@H_502_1@


@H_502_1@

把字符串 "/etc/passwd" 中的斜杠替换成下划线,可以有两种做法@H_502_1@


@H_502_1@

1. 斜杠前面必须有一个分斜杠用来转义@H_502_1@

[czl@mob ~]$ echo /etc/passwd | sed 's/\//_/g'@H_502_1@

_etc_passwd ^^@H_502_1@


@H_502_1@

2. 使用別的分隔符,这样就没有必要对斜杠进行转义,命令书写更简洁@H_502_1@

[czl@mob ~]$ echo /etc/passwd | sed 's#/#_#g'@H_502_1@

_etc_passwd@H_502_1@


@H_502_1@

替换动作的范围@H_502_1@

s/a/A/ <-- 替换第一个a@H_502_1@

s/a/A/g <-- 替换所有a@H_502_1@

s/a/A/3 <-- 替换第3个a@H_502_1@

s/a/A/3g <-- 替换第3个至最后一个a@H_502_1@


@H_502_1@

sed 的常用选项@H_502_1@


@H_502_1@

-n <-- 关闭默认的输出动作@H_502_1@

-r <-- 使用扩展的正则表达式,使用这个参数后@H_502_1@

正则表达式的表示方法会更加方便,推荐使用@H_502_1@


@H_502_1@

下面两条命令是等价的,但是启用了扩展正则表达式的命令更加简单易读@H_502_1@

sed '/^.\{5\}ROOT/d' file@H_502_1@

sed -r '/^.{5}ROOT/d' file@H_502_1@


@H_502_1@

-i <-- sed 默认是把修改后的数据输出到标準输出,不会修改文件@H_502_1@

加上-i参数后,sed就会直接把修改结果写入原文件,小心!@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

awk,比较常用的功能就是按照某个分割符分割一行数据,并输出某些字段(列)@H_502_1@


@H_502_1@

常用的选项:@H_502_1@

-F <--- 字段分割符,可以是一个字符,也可以是多个字符@H_502_1@


@H_502_1@

字段的表示方法:@H_502_1@

$0 <--- 整条记录@H_502_1@

$1 <--- 第1列(字段)@H_502_1@

$2 <--- 第2列(字段)@H_502_1@

$n <--- 第n列(字段)@H_502_1@

$NF <--- 最后一个列@H_502_1@


@H_502_1@

awk 常用的内部变量@H_502_1@

FS,Field separator,字段分割符。字段分割符除了可以通过命令行选项 -F 来指定外,还可以在awk 里面指定@H_502_1@


@H_502_1@

NR,number of records,到当前行为止,总共处理的行数@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

cut,功能类似於awk,但是没有awk那么强大和复杂,当要对数据做分列输出时,经常使用awk,用cut的时候不多。@H_502_1@


@H_502_1@

常用选项@H_502_1@

-d <-- 定义字段的分割符,默认是TAB (delimeter)@H_502_1@

-f <-- 输出指定的字段 (field)@H_502_1@

-b <-- 输出指定位置的字节(byte)@H_502_1@

-c <-- 输出指定位置的字符(character),有別於-b@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

wc,计算数据的字节数,字符数,词数,行数@H_502_1@


@H_502_1@

常用选项@H_502_1@

-c <-- 计算字节数@H_502_1@

-m <-- 计算字符数@H_502_1@

-w <-- 计算词数@H_502_1@

-l <-- 计算行数@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

sort,按行对文件进行排序@H_502_1@


@H_502_1@

常用选项@H_502_1@

-u <-- 去除重复的行@H_502_1@

-n,-h <-- 按照数值排序@H_502_1@

-t <-- 指定分割符@H_502_1@

-k <-- 指定排序的字段@H_502_1@

-r <-- 反过来排序@H_502_1@


@H_502_1@

文件按照大小排序:@H_502_1@

ls -l | sort -k5,5nr@H_502_1@


@H_502_1@


@H_502_1@

uniq,去除连续的重复行@H_502_1@


@H_502_1@

常用选项@H_502_1@

-c <-- 计算重复行的数目@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

tr,转换,删除,缩减相同字符@H_502_1@


@H_502_1@

常用选项@H_502_1@

-d@H_502_1@

-s@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

tac,把一个或者多个文件内容按顺序连接起来,输出到标準输出,每个文件中,内容按行号反序打印。@H_502_1@


@H_502_1@


@H_502_1@


@H_502_1@

rev,把文件中的行左右反转@H_502_1@

猜你在找的Bash相关文章