Linux运维vim、sed awk总结

1.VIM

$vim [filename]

其中filename是要编辑器的文件的路径名。如果文件不存在,它将为你建立一个新文件。Vim编辑程序有三种操作模式,分别称为 编辑模式插入模式命令模式,当运行Vim时,首先进入编辑模式。

2.编辑模式

Vim编辑方式的主要用途是在被编辑的文件中移动光标的位置。一旦光标移到到所要的位置,就可以进行剪切和粘贴正文块,删除正文和插入新的正文。当完成所有的编辑工作后,需要保存编辑器结果,退出编辑程序回到终端,可以发出ZZ命令,连续按两次大写的Z键。

1.移动,跳转,翻页

如果键盘上有上、下、左、右箭头的导航键,就由这些键来完成光标的移动。另外,可以用下面的键完成同样的 按字符移动 功能:

k                上移;
j                下移;
h                左移;
l                右移;
ctrl+f           在文件中前移一页(相当于 page down);
ctrl+b           在文件中后移一页(相当于 page up);
H                将光标移到屏幕上的起始行(或最上行);
M                将光标移到屏幕中间;
L                将光标移到屏幕最后一行。
2.搜索匹配

搜索方法是直接按下按下/[匹配内容] ,取消高亮内容按下:( 进入命令行模式)键入字符 nohl

/str1                正向搜索字符串 str1;
?str2                反向搜索字符串 str2 ;

(大小写N进行上下搜索内容切换)
n                    继续搜索,找出 str1 字符串下次出现的位置;
N                    继续搜索,找出 str1 字符串上一次出现的位置;


3.替换和删除

Vim常规的删除命令是 dx (前者删除 ,后者删除字符 ),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行.

r[str]             用 [str]替换光标所选中的当前字符;

x                  删除光标所选中的当前字符;
[num]x             删除光标所选中的前[num]个字符;

dw                 删除光标右侧的字;
[num]dw            删除光标右侧的[num]个字;

db                 删除光标左侧的字;
[num]db            删除光标左侧的[num]个字;

dd                 删除光标所在行,并去除空隙;
[num]dd            删除剪切光标向下的[num] 行内容,并去除空隙;

4.复制粘贴

从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。

p               小写字母 p,将缓冲区的内容粘贴到光标的后面;
P               大写字母 P,将缓冲区的内容粘贴到光标的前面。

5.替换和重复

在编辑文档的过程中,为消除某个错误的编辑命令造成的后果,可以用撤消命令。另外,如果用户希望在新的光标位置重复前面执行过的编辑命令,可用重复命令。

u                 撤消前一条命令的结果;
.                 重复最后一条修改正文的命令;

2.cut

选项与参数:

  • -d :后面接分隔字符。与 -f 一起使用;
  • -f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;
  • -c :以字符 (characters) 的单位取出固定字符区间;
cho ${PATH} | cut -d ':' -f 5

:为切割的第5栏


3.grep

grep [- - acinv] ‘要搜索的字符串’ file
选项与参数:

  • -a :将 binary 文件以 text 文件的方式搜寻数据
  • -c :计算找到 ‘搜寻字符串’ 的次数
  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!排除(常用)
范例一:将 last 当中,有出现 root 的那一行就取出来;
 last | grep 'root'

4.sort

sort [- - fbMnrtuk] [file or stdin
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思

案例

cat /etc/passwd | sort -t ":" -k 3
以":"为分隔符,的第三栏进行排序(类似cut)
root:x:0:0:root:/root:/bin/zsh
zabbix:x:1000:1000::/home/zabbix:/sbin/nologin
gavin:x:1001:1002::/home/gavin:/sbin/nologin
jason:x:1002:1003::/home/jason:/sbin/nologin
mika:x:1003:1004::/home/mika:/sbin/nologin


5.uniq

用来统计次数,或者只显示唯一去重

uniq [- ic]
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数

案例

history | awk '{ print $2 }' | grep 'reboot' | uniq -c
6 reboot
awk这个是用于处理列的,这里是只显示第二列
uniq -c 进行统计 reboot命令使用的次数

6.wc

wc [-lwm] 
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
echo 'test' | wc -m 
5
这里4个字符串但是会显示5是因为wc命令会把\r或者\n的换行符算上去

6.sed

a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!

删除行

nl /etc/passwd | sed '2,$d'  ($代表到最后一行)
1	root:x:0:0:root:/root:/bin/bash

常用在替换字符串

echo 'I love China'  | sed 's/China/Japan/g'
I love Japan
修改/的分隔符为#
sed -i 's#http://114.114.114.114/#http://8.8.8.8/#g'  #这样不需要转移替换默认的分隔符

或者加上\转移/ 如下
sed -i 's/http:\/\/114.114.114.114\//http:\/\/8.8.8.8\//g'

7.awk

在这里插入图片描述
在这里插入图片描述

  • -F 指定分隔符 (awk -F ‘:’),默认用 空格或者tab
  • NF 每一行分割出来的字段数
  • NR 所有处理的总行数
  • FS 分隔符变量 需要在开头加上BEGIN
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
 [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
'  '          引用代码块
BEGIN   初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//           匹配代码块,可以是字符串或正则表达式
{}           命令代码块,包含一条或多条命令
;          多条命令使用分号分隔
END      结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
 
特殊要点:
$0           表示整个当前行
$1           每行第一个字段
NF          字段数量变量
NR          每行的记录号,多文件记录递增
FNR        与NR类似,不过多文件记录不递增,每个文件都从1开始
\t            制表符
\n           换行符
FS          BEGIN时定义分隔符
RS       输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~            匹配,与==相比不是精确比较
!~           不匹配,不精确比较
==         等于,必须全部相等,精确比较
!=           不等于,精确比较
&&      逻辑与
||             逻辑或
+            匹配时表示1个或1个以上
/[0-9][0-9]+/   两个或两个以上数字
/[0-9][0-9]*/    一个或一个以上数字
FILENAME 文件名
OFS      输出字段分隔符, 默认也是空格,可以改为制表符等
ORS        输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F'[:#/]'   定义:#/三个分隔符

取出20到30行的内容(企业级面试题)

nl /etc/passwd | awk '{if(NR>9 && NR<21) print $0}'
    10	operator:x:11:0:operator:/root:/sbin/nologin
    11	games:x:12:100:games:/usr/games:/sbin/nologin
    12	ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13	nobody:x:99:99:Nobody:/:/sbin/nologin
    14	systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    15	dbus:x:81:81:System message bus:/:/sbin/nologin
    16	polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    17	postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    18	chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    19	sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    20	ntp:x:38:38::/etc/ntp:/sbin/nologin


8. systemctl管理应用

[root@study ~]#  systemctl [command] [unit]
command 主要有:
start :立刻启动后面接的 unit
stop :立刻关闭后面接的 unit
restart :立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思
reload :不关闭后面接的 unit 的情况下,重载配置文件,让设定生效
enable :设定下次开机时,后面接的 unit 会被启动
disable :设定下次开机时,后面接的 unit 不会被启动
status :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机预设执行否、登录等信息等!
is-active :目前有没有正在运作中
is-enable :开机时有没有预设要启用这个 unit

9. 登录档案

  • /var/log/lastlog
    可以记录系统上面所有的账号最近一次登入系统时的相关信息。第十三章讲到的 lastlog 指令就是利用这个
    文件的记录信息来显示的。
  • /var/log/messages
    这个文件相当的重要,几乎系统发生的错误讯息 (或者是重要的信息) 都会记录在这个文件中; 如果系统
    发生莫名的错误时,这个文件是一定要查阅的登录档之一。
  • /var/log/secure
    基本上,只要牵涉到『需要输入账号密码』的软件,那么当登入时 (不管登入正确或错误) 都会被记录在此
    文件中。 包括系统的 login 程序、图形接口登入所使用的 gdm 程序、 su, sudo 等程序、还有网络联机的
    ssh, telnet 等程序, 登入信息都会被记载在这里

7. 软件安装

distribution 代表软件管理机制使用指令在线升级机制(指令)
Red Hat/FedoraRPMrpm, rpmbuildYUM (yum)
Debian/UbuntuDPKGdpkgAPT (apt-get)
rpm -ivh package_name
选项与参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度
[root@study ~] rpm -qa <==已安装软件
[root@study ~] rpm -q[licdR]  已安 装 的 软 件名 称 <==已安装软件
[root@study ~] rpm -qf  存在于系 统 上面的某 个 文件名 <==已安装软件
[root@study ~] rpm -qp[licdR]  未安 装 的某 个 文件名 <==查阅 RPM 文件
选项与参数:
查询已安装软件的信息:
-q :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整文件名 (list);
-qc :列出该软件的所有配置文件 (找出在 /etc/ 底下的檔名而已)
-qd :列出该软件的所有说明文件 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名,找出该文件属于哪一个已安装的软件;
-q --scripts:列出是否含有安装后需要执行的脚本档,可用以 debug 喔!
查询某个 RPM 文件内含有的信息:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出
某个 RPM 文件内的信息,而非已安装的软件信息!注意!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值