标签:命令 filter ctr 插入 执行 gre min asasas sda
模式化编辑器、全屏编辑器
centos7安装vim:yum -y install vim
三种模式
3、末行模式,可以使用命令操作文本内容:
:10d 删除第10行
:10,20d 删除第10行-20行
模式之间转换:
编辑模式 --> 输入模式:
i 在当前光标所在字符前面进入输入模式
a 在当前光标所在字符后面进入输入模式
o 在当前光标所在行的下方新建一行,并转换为输入模式
I 在当前光标所在行的行首进入输入模式
A 在当前光标所在行的行尾进入输入模式
O 在当前光标所在行的上方新建一行并进入输入模式
ESC
:
末行模式 --> 编辑模式:ESC
可能需要敲击多次
vim相关操作:
1、打开文件:
vim file 普通打开文件
vim +n file 打开文件且光标位于第n行首部
vim + file 打开文件并编辑最后一行
vim +/pattren 打开文件并定位第一次被模式匹配到的行的行首
在末行模式下关闭文件:
:q 不保存退出
:wq 保存退出
:q! 强制退出
:w 保存退出
:w! 强行保存
:wq! 强行保存并退出
在编辑模式下退出:ZZ
保存并退出
3、移动光标(编辑模式下)
# 逐字符移动:
箭头
# 按单词为单位移动
w # 移至下一单词的词首
e # 移至当前或下一个单词的词尾
b # 移至当前或前一个单词的词首
# 行内跳转
0 # 绝对行首
^ # 行首的第一个非空白字符
$ # 绝对行尾,包含空白字符
# 行间跳转
nG # 直接跳转至第 n 行行首
G # 跳转至最后一行行首
# 在末行模式下,直接给出行号即可
# 翻屏操作(编辑模式)
ctrl+f 向下
ctrl+b 向上
4、删除(字符,单词,行):
# 命令行删除单个字符:
x # 删除光标所在处的单个字符
nx # 删除光标所在处以及向后的共n个字符
# 编辑模式下,跟跳转命令结合使用
dw # 删除当前单词 delete word
dd # 删除当前所在行
ndd # 往下删除当前所在行在内的n行
# 末行模式:
:2,4d # 删除第2-4行
:2,+5 # 删除第2行以及随后的5行
$d 删除最后一行
.d 删除当前行
$-1d 删除倒数第二行
5、复制命令(在编辑模式下):
yy 复制整行
6、粘贴命令p
:
若复制或删除的内容为整行内容,则粘贴至所在行的下方;
复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
7、撤销编辑操作:
u # 撤销前一次的编辑操作,可以连续使用n次
nu # 撤销最近n次的编辑操作
ctrl+r # 撤销最近一次的撤销操作
8、重复前一次的编辑操作:.
9、查找:
/pattren
?pattren
10、查找并替换(在末行模式下)
n,ms/ad/AD/g # 在n-m行,将ad替换成AD
1,3s/hello/hi/g # 在1-3行中将hello字符串替换为hi
重定向有相关介绍
追加一行内容到文件末尾:echo asasas >> file
清空原文件并写入内容:echo asasas > file
追加多行内容:
cat >> 3.txt << EOF
> q
> w
> e
> rt
> EOF
查看所有内容
-n
显示行号-c
按字节显示,例如-c3显示前三个字节(貌似不存在)--help
查看介绍,和man作用类似,但包含中文默认查看前10行内容,可以指定要显示的行数。
-n
:显示前n行
[root@localhost ~]# head -2 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
默认查看后10行内容,可以指定要显示的行数。
-n
显示最后的n行默认不编辑原文件,仅对模式空间的数据做处理。
格式:sed ‘AddressCommands‘ file ...
-n
:静默模式,不显示模式空间中的内容-i
:直接修改原文件-e
:可以同时执行多个脚本-f
:保存至文件/path/to/script
, sed -f /path/to/script file
将指定文件中的脚本运行在file上-r
:表示使用扩展正则表达式Address:与后面的commands结合使用
# 1、Startline、Endline
例如: 1,100
$ 表示最后一行
$-1 倒数第二行
# 2、/RegExp/
/^root/ # 表示以root字符串开始的行
sed '/3/d' file # 不显示包含3的行
sed -n '/a/p' 1.txt # 显示包含字符a的行
# 3、/pattren1/,/pattren2/,正则匹配
# 第一次被pattern1匹配的行开始,到第一次被pattern2匹配到的行结束中间的所有行。
sed -n /hi/,/a/p 1.txt
# 显示从第一次匹配到字符 hi 和字符 a 以及之间所有行
# 4、指定行
sed -n 'mp' 1.txt # 显示第m行
[root@localhost ~]# sed -n 2p 3.txt
b
# 5、Startline, +N # 从startline开始,向后的N行
sed '1,+3d' file # 删除1-4行
[root@localhost ~]# sed 1,+2d 3.txt # 输出删除后剩余的所有内容
d
e
f
g
h
[root@localhost ~]# cat 3.txt
a
b
c
d
e
f
g
h
Commands
# 1、d 删除(不显示)符合条件的行
sed 1,2d file # 显示除了1-2行的其他行
# 2、p 显示符合条件的行,结合 -n 使用,只显示符合条件的行
sed -n '/^a/p' 1.txt # 显示以 a 开头的所有行
# 3、na\string 在指定的行的下一行后追加新的行 after
sed '3a\hahaha' 1.txt # 在第三行下一行追加hahaha字符串
# 4、ni\string 在指定的行的前一行追加新的行
# 5、r file 将指定文件的内容添加至符合条件的行处
sed 'nr demo1.sh' f1.txt
# 读取demo1.sh的所有内容,将其放在 f1.txt 的第 n 行后面
# 6、w file 将指定文件的内容添加至指定的文件中,会清空目标文件
sed '/a/w f2.txt' f1.txt # 将f1.txt中包含字符a的行写入文件f2.txt中
# 7、s/pattren/string/
sed 's/a/A/' f1.txt # 将字符a替换为字符A
sed 's/.*a.*/A/' f1.txt # 将包含a的行替换字符A
-g # 全局替换,只要匹配就替换
sed 's/a/A/g' f1.txt # 替换每行中所有的a为A
-i # 忽略大小写
sed s/h/Y/i 3.txt
# 分隔符可以为 s###. s@@@
# 不要使用要替换的字符为分隔符
& # 引用前面匹配到的字符串:
sed 's/a/&r/g' f1.txt # 在匹配到的a字符后追加r字符
sed 's#l\(..e\)#L\1#g' f1.txt
# 只将以e结尾中间只有两个字符的l替换为L,例
hello,my love
hello, linux
>>>
hello,my Love
hello, linux
显示某一行或多行,pattern scanning and processing language
awk 'NR==n' 3.txt # 显示第 n 行内容
awk "NR==n, NR==m" 3.txt # 显示 n-m 行的内容
Patterns 由文本字符 和 正则表达式的元字符组合而成的匹配条件
-i
忽略大小写--color
匹配的内容高亮显示-v
反向查找-o
只显示匹配到的字符串grep 'ab' 1.txt # 查看包含 字符 ab 的所有行
grep -v '2' 1.txt # 列出所有不包含 字符 2 的行
正则表达式:
. # 匹配任意单个字符
* # 匹配其前面的字符任意次
.* # 匹配任意多个任意字符
\? # 匹配前一个字符0或1次
\{n, m\} # 匹配前面的字符至少n次,之多m次
^ # 字符出现在行首
$ # 字符出现再行尾
^$ # 空白行
[] # 指定集合内的任意一个字符
[^] # 非
[:digit:] # 同通配符使用
grep '[[:digit:]]' 1.txt # 匹配包含数字的行
按分割后指定位置取每行对应列的内容。
-d
:指定分隔符,默认是一个空格-f
:指定要显示的字段[root@localhost ~]# cat 3.txt
sdasda
a 12as asdasdv
vc 12as asdasds
d 12a asdasdf
[root@localhost ~]# cut -d' ' -f1 3.txt # 按照空格分割,显示每行的第一个字段
sdasda
a
vc
d
cut -d' ' -f1,2 1.txt # 每行的第1个和第2个字段
cut -d' ' -f1-3 1.txt # 显示每行的第 1-3 个字段
-n
按照数值大小排序-r
降序-t
指定分隔符-k
指定字段,sort -t: -k3 -n /ect/passwd
-u
重复行只显示一次-f
不区分大小写相邻并完全一样的行只显示一次
[root@localhost ~]# cat 3.txt
a
bb
aa
aa
bb
cc
cc
-d
显示重复行,只显示一次
[root@localhost ~]# uniq -d 3.txt
aa
cc
-D
显示重复行,有多少显示多少
[root@localhost ~]# uniq -D 3.txt
aa
aa
cc
cc
-c
显示重复的行和对应的次数
[root@localhost ~]# uniq -c 3.txt
1 a
1 bb
2 aa
1 bb
2 cc
-l
显示行数-w
显示单词数-c
显示字节数-m
字符数-L
最长的一行包含的字符数fangqihan@fangqihan-PC:~/data$ wc 1.txt
10 18 80 1.txt
行 单词 字节
translate or delete characters
显示替换后的字符,其中ac代指集合,而非一个字符串
tr 'ac' 'bd' < file # 将文件中的字符a替换成字符b
tr 'a-z' 'A-Z' < file # 将小写换成大写字母
tr -d '1' < file # 删除字符1
标签:命令 filter ctr 插入 执行 gre min asasas sda
原文地址:https://www.cnblogs.com/fqh202/p/9434401.html