2019-01-24 19:13:37 weixin_39979119 阅读数 38
  • 马哥Linux教程-Linux操作系统基础由浅入深全面讲解1

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    19349 人正在学习 去看看 马永亮

过滤注释行 , 过滤以 “#” 开头的行

 cat redis.conf | grep -v "^#"

过滤空行和注释行

 cat redis.conf | grep -Ev "^$|^[#;]"
2019-02-11 14:43:00 weixin_34024034 阅读数 159
  • 马哥Linux教程-Linux操作系统基础由浅入深全面讲解1

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    19349 人正在学习 去看看 马永亮

cat filename | grep ^[^#]

转载于:https://www.cnblogs.com/MimiSnowing/p/10361831.html

2019-01-12 01:58:21 jzjsqrzjzj 阅读数 1427
  • 马哥Linux教程-Linux操作系统基础由浅入深全面讲解1

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    19349 人正在学习 去看看 马永亮

正常查看所有文件命令,-a表示可以查看隐藏文件
ls -a
通过查找命令,过滤出点开头的文件
grep "^\..*"
其中,^\. 表示以点开头,因为点在Linux中是特殊字符(需要反斜杠转义),表示任意某个字符,必须要匹配一个字符,空格也行,空格也表示一个字符,但是不能是空, * 表示某字符匹配0次或者多次,.* 连在一起就表示任意长度的字符
如果少了一个点是^\.* ,表示转义后的点符号匹配0次或多次,所以是不能只查出点开头的文件
正确命令是: ls -a | grep “^\..*”

但是如果想以长列表的格式输出呢,加个-l选项么?
经过测试 ls -al | grep “^\..*” 没有任何输出,原因是 ls -al 通过管道传过去的是长列表格式,每行数据不只是文件名,还有文件权限,属主,大小,时间等信息,就不能以上面的条件进行过滤了
通过观察长列表格式,点开头的文件都有时间参数,“数字+空格+点”这个格式就能匹配出点开头的文件
正确命令是:ls -al | grep “[0-9] \.”
但是这里有个小缺陷,如果文件中有data123 .log类似于这样格式的文件,那上面的命令就失效了

再来介绍个利用gawk进行过滤的方法
前面还是ls -al 通过管道传递输出给gawk
gawk逐行处理数据,默认以空格为分隔符,对每行进行切割,用$1取第一个字段,$2取第二个字段,以此类推,$0 表示本行的原数据,我们只要匹配文件名对应的 $9 字段即可,$9 ~ /^\./ 其中~表示精确匹配,篇幅有限,关于gawk其他的语法格式不再赘述
正确的命令是: ls -al | gawk ’ $9 ~ /^\./{print $0}’

菜鸟手书,欢迎指正

2013-05-22 17:40:00 weixin_30439031 阅读数 14
  • 马哥Linux教程-Linux操作系统基础由浅入深全面讲解1

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    19349 人正在学习 去看看 马永亮
不知道你是想实现什么目的,如果你是想只显示配置文件中的以 # 号开头的行,那就使用
# grep ^# filename
如果是想显示除 # 号开头的行的话呢,只需加个参数-v (-v 表示相反的过滤)就行了
# grep -v ^# filename

http://zhidao.baidu.com/question/339210594.html

转载于:https://www.cnblogs.com/seasonzone/archive/2013/05/22/3093200.html

2019-05-21 11:19:36 weixin_44221613 阅读数 47
  • 马哥Linux教程-Linux操作系统基础由浅入深全面讲解1

    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令和基本用法,课程由浅入深,讲授方法受到98%学员一致好评!

    19349 人正在学习 去看看 马永亮

1 grep文本过滤命令
grep中的正则表达式

grep ^root passwd #过滤以root开头的行
grep root$ passwd #过滤以root结尾的行
grep -i ^root passwd #不区分大小写,过滤以root开头的行
grep -E "^root | root$" passwd #过滤以root开头或root结尾的行,-E表示扩展正则表达式
grep -E -v "^root | root$" passwd # -v 表示反向过滤
grep -E -v "^root | root$" passwd |grep root #过滤root在中间的行
grep -i root passwd | grep -v -i -E "^root | root$" #过滤root在中间的行


grep 'r.t' test #过滤r和t之间只有一个字符
grep 'r..t' test #过滤r和t之间有两个字符
grep 'r...t' test #过滤r和t之间有三个字符
grep 'r*t' test # 过滤r出现的任意次数
grep 'r\**t' test #过滤r,t之间有0个字符
grep 'ro*t' test #过滤r和t之间o出现的任意次数
grep -E 'ro*t' test #过滤r和t之间o出现的任意次数
grep -E 'ro?t' test #过滤r和t之间o出现的0和1次
grep -E 'ro{1,}t' test #过滤r和t之间o出现的1次以上
grep -E 'ro{,3}t' test #过滤r和t之间o出现的3以下的次数


grep -E 'r....' test #过滤r之后出现4个字符
grep -E 'r....\' test#精确匹配
grep -E '\<....r' test #过滤r之前出现4个字符

应用: 编写脚本文件,使输出可以登录系统的用户

vim show_loginuser.sh
#!/bin/bash
SHELL=$(echo `grep -v nologin /etc/shells ` | sed 's//|/g')
grep -E "$SHELL" /etc/passwd | cut -d : -f l

2 sed 行编辑器
p模式(显示)

sed -n '^:/p' fstab #显示fstab中以:开头的行
sed -n 'UUID$/p' fstab #显示fstab中以UUID结尾的行
sed -n '/^UUID/p' fstab #显示fstab中以UUID开头的行
sed -n '2,6p' fstab #显示fstab中的第二行和第六行
sed -n '2,6!p' fstab #显示fstab中除过第二行和第六行其余的行

d模式(删除,只是显示的时候删除,并不删除原文件)

sed '/^UUID/d' fstab #删除以UUID开头的行
sed '/^#/d' fstab #删除以#开头的行
sed '/^$/d' fstab #删除以空格开头的行
sed '/^UUID/!d' fstab #删除不是以UUID开头的行
cat -n fstab | sed '1,4d' #删除1到4行
cat -n fstab | sed  -e '2d,6d' #删除第二行和第六行

a模式(添加,默认在最后一行添加)

sed '/^UUID/a\hello' fstab #在以UUID开头的行的前一行添加hello
sed '/^UUID/a\hello' \newstos fstab #在以UUID开头的行的前一行添加hello换行再添加westos

i模式(插入)

sed '/^UUID/i\hello' fstab #在UUID的前一行添加hello

c模式(替换)

sed '/^UUID/c\hello'  fstab #把以UUID开头的行替换成hello

w模式(写入)

sed '/^UUID/wwestos' fstab
sed -n '/^UUID/wwestos' fstab
sed '/^UUID/=' fstab #显示以UUID开头所在的行号
sed '6r westos' fstab

3 awk报告生成器
awk处理机制:awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行,做一些总结性质的工作,在命令格式上分别体现如下:

BEGIN{}:读入第一行文本之前执行,一般用来初始化操作
{}     :逐行处理,逐行读入文本执行相应的处理,是最常见的编辑指令块
END{}  :处理完最后一行文本之后执行,一般用来输出处理结果


awk -F ":" '{print $1}' passwd #以:为分隔符,显示第一列
awk -F ":" 'BEGIN{print "NAME"}{print $1}' passwd #以NAME开始显示第一列
awk -F ":" 'BEGIN{print "NAME"}{print NR$1}END{print "END"}' passwd #以NAME开始,以END结束,显示第一列并显示行号
awk -F ":" 'BEGIN{print "NAME"}{print NR;print }END{print "END"}' passwd #显示行号并换行
awk -F ":" '/bash$/{print $1}' passwd #sh 结尾的行第一列,$1表示第一列
awk -F ":" 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd #统计passwd中以bash结尾的行数
awk -F '/^ro/{print}' passwd #打印以ro开头的行
awk -F '/^[a-d]/{print}' passwd #打印以a到d开头的行
awk -F '/^a|nologin$/{print}' passwd #打印以a开头或者以nologin结尾的行
awk -F ":"  '$1~/^r/{print}' passwd#打印以r开头的行
awk -F ":" '$1!~/^r/{print}'  passwd#打印不以r开头的行
awk -F ":" '{print NR,$0}' passwd #以:为分隔符打印第一列,并表示行号,$0表示文件一整行的内容

应用:
1 计算显示能够登录系统的用户个数

awk -F ":" 'BEGIN{n=0}$5!~/^\/home/&&/bash/{n++}END{print n}' /etc/passwd

2 找出系统中可以登录系统,但用户家目录不在/home下

awk -F ":" '$6!~/^\/home/&&/bash$/{print $1}' /etc/passwd

3 抓取eth0的网卡ip

ifconfig eth0 | awk -F "" '/inet\>/{print $2}'

4 统计在系统中可以登录系统的用户

awk -F ":" '$5!~/^\/home/&&/bash/{print $1}' /etc/passwd

5 统计文件的行数

awk 'BEGIN{n=0}{n++}END{print n}' /etc/passwd

linux基础二

阅读数 24

linux去除换行

阅读数 0

没有更多推荐了,返回首页