Linux常用指令(2)
继续上篇来介绍一些基本的指令
1. tr指令
- tr是用来对从stdin进入的字符进行相关的翻译和转换的,并且将其呈现在stdout当中
- tr会接收两个字符set,然后用第二个set里面的字符来替换第一个set里面的字符
- tr预定义了一些sets供用户来直接使用
- alnum: 字母数字组成的字符集
- alpha:按字母顺序的字符集
- blank: 空白字符集
- cntrl: 控制字符集
- digit: 数字字符集
- graph: 图像字符集
- lower: 小写字母字符集
- print: 可以写出的字符集
- punct: 标点符号字符集
- space: 空格字符集
- upper: 大写字母字符集
- xdigit: 十六进制字符集
- tr -d [blabla] 删除[]里面定义的字符
2. colrm 指令
- 用来删除行的指令
// 删除从第四行开始到末尾的所有
$ cat grocery.list | colrm 4
3. expand 和 unexpand 指令
- expand指令能够将tabs变成空格
- unexpand 指令能够将空格变成tab
4. comm, cmp以及diff指令
- diff指令比较两个文件,并且告知二者之间的不同
- -w 忽视空格上的不同
- -i 忽视大小写的不同
- comm 也是比较两个文件,但是行为不太一样。会生成三行输出
- 只在第一个文件当中出现的行
- 只在第二个文件当中出现的行
- 在两个文件当中都出现的行
- cmp 比较两个文件
- 显示出两个文件不同的byte和行号
5. bc指令
- 使用bc来做基础运算 - basic calculator
$ echo 2+3 | bc
6. sed 指令
https://coolshell.cn/articles/9104.html
sed指令可以用来对文件或者数据流进行转化
- 一次读取一行的数据
- 对这一行数据实行特定的操作
- 一般来说输出到stdout
功能
- 从buffer里面删除文字
- 在buffer附上文本或者插入文本
- 写入文件
- 用regex定义的规则来转化文本
-e: 指定表达式或者编辑的脚本 用来做替换
- s 表示这是个替换命令
- 用 / 作为分隔符
- 前面是待替换的文本,后面是替换的文本
- g 便是让这个替换在现在的整个buffer里都生效
$ echo "IBM 174.99" |sed –e 's/IBM/International Business Machines/g'
International Business Machines 174.99
$ echo "Oracle DB"|sed -e 's/Oracle/IBM/g' -e 's/DB/DB2/g'
IBM DB2
$ echo "C:\Program Files\PuTTY\putty.exe"| sed -e 's/\\/\//g' -e 's/ /_/g' -e 's/://g'
C/Program_Files/PuTTY/putty.exe
- 用来做漏斗
- d 表示要删除的东西
- 然后中间跟着的是正则表达式 表示的一个string pattern
cat << EOF > dummy_sed.txt
# top of file
# the next line here
# Last Name, Phone
Smith, 555-1212
Jones, 555-5555 # last number
EOF
$ sed '/^[[:space:]]*#/d' dummy_sed.txt
Smith, 555-1212
Jones, 555-5555 # last number
$ grep -v ^[[:space:]]*# dummy_sed.txt
Smith, 555-1212
Jones, 555-5555 # last number
7. awk指令
7.1 指令范式
// $1 表示第1列,$4表示第4列 注意$0表示整行
$ awk '{print $1, $4}' netstat.txt
- 用来做转换,漏斗,格式化等
- 从stdin拿数据,然后展示在stdout当中
7.2 格式化输出
格式化输出的样式基本上和c语言的一样
$ awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}' netstat.txt
7.3 过滤记录的功能
$ awk '$3==0 && $6=="LISTEN" ' netstat.txt
// 内建变量NR来展示表头
$ awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt
$ awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt
7.4 awk的内建变量
- $0 当前记录
- $1 - $n 当前记录的第n个字段
- FS 输入字段分隔符,默认是空格或者Tab
- NF 当前记录当中的字段个数
- NR 已经读出的记录数,行号
- FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
- RS 输入的记录分隔符,默认为换行符
- OFS 输出字段分隔符,默认空格
- ORS 输出记录分隔符,默认换行符
- FILENAME 当前输入文件的名字
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 stone2paul@gmail.com
文章标题:Linux常用指令(2)
文章字数:1.1k
本文作者:Leilei Chen
发布时间:2020-01-31, 12:44:54
最后更新:2020-02-02, 14:06:57
原始链接:https://www.llchen60.com/Linux%E5%B8%B8%E7%94%A8%E6%8C%87%E4%BB%A4-2/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。