文件编辑器:vi和vim,vim是vi的升级版。u是撤销的功能。
*vim/vi的三种编辑模式:命令模式-->输入模式-->底行命令模式(:wq)
0:移动到光标所在行首
$:移动到行尾
H:视窗第一行
M:移动到视窗的中间行
L:视窗的最后行
G:移动到文件最后行
gg:跳到文件头部
x:删除光标所在的字符
dw:删除光标所在的单词
d$:删除光标至行尾所有字符
dd:同d$
dnd:删除当前的n行
dG:删除当前行道最后一行
's#dog#cat#g':后面单词替换前面的
yw:拷贝光标所在的单词
y$:拷贝光标到行尾
yy:拷贝当前行
yny:拷贝当前n行
p:粘贴在光标后
P:粘贴在光标后(大写P)
*管道: cat input.txt | grep "tianliang" | head -1
cat input.txt | grep "tianliang" | head -1 | xargs ls -l
*awk是行处理器
$0:表示当前行
$1:每行的第一个字段
NF:每行的字段数量
NR:行号
awk -F ";" '{print $1}' /etc/passwd
awk -F: ‘{print $1; print $2}’ /etc/passwd 前两个字段分行输出
awk -F: '{print $1 $2}' /etc/passwd 前两个字段相连输出
awk -F: ‘{print $1,$2}’ /etc/passwd
多了个逗号,将每行的前两个字段输出,两个字段使用空格分隔
awk -F: ‘NR==5 || NR==6 {print }’ /etc/passwd
显示第五行和第六行
ls -l | awk ‘NR!=1 {print}’
不显示第一行
*sed命令为管道命令(1)删除指定行:cat -n input.txt | sed ‘1d’
删除指定行区间的数据:cat -n input.txt | sed ‘1,4d’
删除第m到最后行的数据:cat -n input.txt | sed ‘m,$d’
在第2行后插入指定字符串:cat -n input.txt | sed ‘2a 第2行后插入数据’
在第3行前插入指定字符串:cat -n input.txt | sed ‘3i 第3行前插入数据’
在第2行后插入两行或多行字符串:
cat -n input.txt | sed ‘2a 第一行数据\n第二行数据’
将第1,2行的内容替换成为“新内容”:cat -n input.txt | sed ‘1,2c 新内容’
只显示文档的第3到第5行:cat -n input.txt | sed -n ‘3,5p’
替换表达式:sed ‘s/要被取代的字符串/新字符串/g’。如将字符串html替换成jsp,cat -n input.txt | sed -n ‘s/html/jsp/g’
*sort将文件或者文本的每一行作为一个单位,互相比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
sort input.txt
忽略相同行使用-u选项,等同于管道符+uniq命令
sort -u input.txt 等同于sort input.txt | uniq
sort -k2nr(k2指第二个字段,n指数字,r为降序排序) -k3nr(第2个出现一样的时候,看第三个) input.txt