Linux笔记

BASH特性

bash 复制代码
# history命令
-c 清楚历史记录
-r 恢复历史记录

# 调用历史记录命令
# !加历史id,快速执行历史命令
!362 

# !! 执行上次的命令,以及上下左右寻找
!!

shell变量

bash 复制代码
root@lisheng-VMware20-1:~# echo $music 
大碗宽面
root@lisheng-VMware20-1:~# echo ${music}
大碗宽面

单引号变量不识别特殊语法

双引号变量能识别特殊语法

bash 复制代码
lisheng@lisheng-VMware20-1:~$ name='${me}'
lisheng@lisheng-VMware20-1:~$ echo $name
${name}
lisheng@lisheng-VMware20-1:~$ name2="${name}"
lisheng@lisheng-VMware20-1:~$ echo $name2
me

特殊变量学习

参数传递

bash 复制代码
位置参数的获取
$0 获取文件名
$1 获取第一个参数
$2 ....
bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat >touch_a.txt<< EOF
> 1
> 2
> 3
> EOF
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat touch_a.txt 
1
2
3
# 以前的数据会被清空

grep

bash 复制代码
# -n现实行号
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -n hello touch_a.txt 
1:hello

# -v显示不包含lisi的
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -v "lisi" touch_a.txt 
hello
world
wangwu text

# -i不区分大小写
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep Lisi touch_a.txt 
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -i Lisi touch_a.txt 
lisi text

# -E支持正则表达式
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -E "lisi||hello" touch_a.txt 
hello
world
lisi text
wangwu text

# -c显示匹配数量
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ grep -c "lisi" touch_a.txt 
1

sed:流编辑器

测试文件内容

bash 复制代码
I am zhangsan
I like badminton ball, billiard ball and chinese
chess my site is http://www.zhangsan.com
my telphone is 123456

输出第2-3行的内容

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed -n '2,3p' touch_a.txt 
I like badminton ball, billiard ball and chinese chess
my site is http://www.zhangsan.com

过滤出含有zhangsan字符串的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed -n '/zhangsan/p' touch_a.txt 
I am zhangsan
my site is http://www.zhangsan.com

删除含有zhangsan字符串的行,默认不会修改文件

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '/zhangsan/d' touch_a.txt 
I like badminton ball, billiard ball and chinese chess
my telphone is 123456

删除指定的行

bash 复制代码
sed -i '3d' touch_a.txt
sed -i '5,8d' touch_a.txt

将文件中的zhangsan字符串全部替换为lisi,默认不会修改文件

bash 复制代码
sed 's#zhangsan#lisi#g' touch_a.txt

将文件中的zhangsan字符串全部替换为lisi,同时将telephone号码123456改为654321

bash 复制代码
sed -e 's#zhangsan#lisi#g' -e 's#123456#654321#g' touch_a.txt

在touch_a.txt文件的第二行后追加文本

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '2a hello' touch_a.txt 
I am zhangsan
I like badminton ball, billiard ball and chinese chess
hello
my site is http://www.zhangsan.com
my telphone is 123456

在touch_a.txt文件的第二行插入文本

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ sed '2i test' touch_a.txt 
I am zhangsan
test
I like badminton ball, billiard ball and chinese chess
my site is http://www.zhangsan.com
my telphone is 123456

awk

准备测试文件

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ cat awk_text.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
1p:x:4:7:1p:/var/spool/1pd:/sbin/nologin

取文件第二行到第三行的内容

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk 'NR>1&&NR<5' awk_text.txt 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

过滤出含有root字符串的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk '/root/' awk_text.txt 
root:x:0:0:root:/root:/bin/bash

过滤出以非r开头的行

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk '/[^r]/' awk_text.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
1p:x:4:7:1p:/var/spool/1pd:/sbin/nologin

取文件的第一列、第三列和最后一列的内容,并打印引号

bash 复制代码
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F ":" '{print NR,$1,$3,$NF}' awk_text.txt 
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 1p 4 /sbin/nologin

处理以下文件内容,将域名取出并根据域名进行计数排序处理

bash 复制代码
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html
bash 复制代码
# 取出每行中的域名:
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt 
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org

# 排序
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt|sort 
mp3.etiantian.org
post.etiantian.org
post.etiantian.org
www.etiantian.org
www.etiantian.org
www.etiantian.org

# 去重计数
lisheng@lisheng-VMware20-1:~/Desktop/mkdir_a$ awk -F '/' '{print $3}' awk_text.txt|sort|uniq -c
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
相关推荐
GanGuaGua34 分钟前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm43 分钟前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
不掰手腕1 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
babytiger1 小时前
python 通过selenium调用chrome浏览器
前端·chrome
Lynnxiaowen1 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉2 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说2 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活2 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx
IT成长日记2 小时前
【Linux基础】Linux系统配置IP详解:从入门到精通
linux·运维·tcp/ip·ip地址配置
夜无霄2 小时前
安卓逆向(一)Ubuntu环境配置
linux·运维·爬虫·ubuntu