Linux笔记

BASH特性

# history命令
-c 清楚历史记录
-r 恢复历史记录

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

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

shell变量

root@lisheng-VMware20-1:~# echo $music 
大碗宽面
root@lisheng-VMware20-1:~# echo ${music}
大碗宽面

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

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

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

特殊变量学习

参数传递

位置参数的获取
$0 获取文件名
$1 获取第一个参数
$2 ....


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

# -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:流编辑器

测试文件内容

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行的内容

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字符串的行

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字符串的行,默认不会修改文件

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

删除指定的行

sed -i '3d' touch_a.txt
sed -i '5,8d' touch_a.txt

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

sed 's#zhangsan#lisi#g' touch_a.txt

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

sed -e 's#zhangsan#lisi#g' -e 's#123456#654321#g' touch_a.txt

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

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文件的第二行插入文本

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

准备测试文件

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

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

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字符串的行

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

过滤出以非r开头的行

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

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

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

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

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
# 取出每行中的域名:
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

相关推荐

  1. Linux笔记

    2024-05-13 10:04:07       37 阅读
  2. Linux笔记

    2024-05-13 10:04:07       10 阅读
  3. linux笔记

    2024-05-13 10:04:07       10 阅读
  4. linux 线程笔记

    2024-05-13 10:04:07       39 阅读
  5. Linux期末复习笔记

    2024-05-13 10:04:07       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 10:04:07       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 10:04:07       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 10:04:07       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 10:04:07       20 阅读

热门阅读

  1. centos7下用logrotate给tomcat的catalina.out做日志分割

    2024-05-13 10:04:07       11 阅读
  2. websocket和http协议的区别

    2024-05-13 10:04:07       14 阅读
  3. 计算机网络-负载均衡算法

    2024-05-13 10:04:07       12 阅读
  4. MLXtend,一个数据科学和机器学习Python库

    2024-05-13 10:04:07       13 阅读
  5. 电力乙级资质延伸换证的政策背景与趋势

    2024-05-13 10:04:07       16 阅读
  6. Mac 查看jdk版本

    2024-05-13 10:04:07       13 阅读
  7. Oracle的高级分组函数grouping和grouping_id

    2024-05-13 10:04:07       13 阅读
  8. 【重庆橙子科技】了解调用链

    2024-05-13 10:04:07       10 阅读
  9. 大型ERP设计-业务与功能指引:物料库存状态

    2024-05-13 10:04:07       16 阅读