linux三剑客使用
常用操作:
Mkdir tep 创建文件夹 tep
Ls 获取当前目录
-L 查看文件属性
-Ld 查看指定文件属性
mv test.txt ~/tep 将文件移动到tep目录下
rm -rf test.txt 删除文件
redir tep 删除文件
文件属性:
r 读权限 4
w 写权限 2
x 操作权限 1
chmod 777 test 修改文件属性 可读可写可执行
网络命令:
ping:测试网络情况
- -c ping的次数
- -L 每次ping的时间间隔
netstat:打印linux网络系统状态信息
-t 列出所有的tcp
-u 列出所有的udp
-L只显示监听端口
-n 以数字形式显示地址和端口号
-p 显示进程的pid和名字
性能:
top : 进程的使用情况,实时监控
ps:打印所有进程状态-非实时的
-aux 显示所有进程 包括用户分组情况
man ps 详细帮助文档
linux三剑客和管道使用:
管道:
“|” 管道符左边命令的输出作为管道符右边命令多的输入
正则表达式:
元字符
“.” 匹配除换行符以外的任意字符
“\w” 匹配字母数字或下划线或汉字
"\s" 匹配任意空白字符
"\d"匹配数字
“\b” 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
限定符
“*” 重复零次或更多次
“+” 重复一次或更多次
“?” 重复零次或一次
"{n}" 重复n次
"{n,}" 重复n次或更多次
"{n,m}" 重复n到m次
grep
-v 显示不被patterm匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-E 使用ERE,相当于egrep
匹配到root并显示行数
grep -n root test.txt
匹配到非含有root并显示行数
grep -nv root test.txt
匹配以s开头的并显示行号
grep -n ^s test.txt
匹配以n结尾的并显示行号
grep -n n$ test.txt
Sed(详细菜鸟教程)
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
- -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -h或--help 显示帮助。
- -n或--quiet或--silent 仅显示script处理后的结果。
- -V或--version 显示版本信息。
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
新增:sed -e '4 a newline' testfile
取代:
[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
删除:sed '2,5d'
[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
插入:sed '2i drink tea'
增加两行以上
sed '2a Drink tea or ......\
drink beer ?'
打印:sed '/root/p' sed -n '5,7p'
取代:sed 's/要被取代的字串/新的字串/g'
直接修改文件内容(危险动作)
-i 选项可以直接修改文件内容
awk
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
- -F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 - -v var=value or --asign var=value
赋值一个用户定义变量。 - -f scripfile or --file scriptfile
从脚本文件中读取awk命令。 - -mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 - -W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 - -W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。 - -W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。 - -W lint or --lint
打印不能向传统unix平台移植的结构的警告。 - -W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。 - -W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替和=;fflush无效。 - -W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 - -W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。 - -W version or --version
打印bug报告信息的版本。
运算符
= += -= *= /= %= ^= **= | 赋值 |
---|---|
?: | C条件表达式 |
|| | 逻辑或 |
&& | 逻辑与 |
~ 和 !~ | 匹配正则表达式和不匹配正则表达式 |
< <= > >= != == | 关系运算符 |
空格 | 连接 |
+ - | 加,减 |
* / % | 乘,除与求余 |
+ - ! | 一元加,减和逻辑非 |
^ *** | 求幂 |
++ -- | 增加或减少,作为前缀或后缀 |
$ | 字段引用 |
in | 数组成员 |
内建变量
$n | 当前记录的第n个字段,字段间由FS分隔 |
---|---|
$0 | 完整的输入记录 |
ARGC | 命令行参数的数目 |
ARGIND | 命令行中当前文件的位置(从0开始算) |
ARGV | 包含命令行参数的数组 |
CONVFMT | 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组 |
ERRNO | 最后一个系统错误的描述 |
FIELDWIDTHS | 字段宽度列表(用空格键分隔) |
FILENAME | 当前文件名 |
FNR | 各文件分别计数的行号 |
FS | 字段分隔符(默认是任何空格) |
IGNORECASE | 如果为真,则进行忽略大小写的匹配 |
NF | 一条记录的字段的数目 |
NR | 已经读出的记录数,就是行号,从1开始 |
OFMT | 数字的输出格式(默认值是%.6g) |
OFS | 输出字段分隔符,默认值与输入字段分隔符一致。 |
ORS | 输出记录分隔符(默认值是一个换行符) |
RLENGTH | 由match函数所匹配的字符串的长度 |
RS | 记录分隔符(默认是一个换行符) |
RSTART | 由match函数所匹配的字符串的第一个位置 |
SUBSEP | 数组下标分隔符(默认值是/034) |
while 读取文件并输出
while read line;do echo $line;done<test.txt