Linux系统的强大和灵活性离不开它强大的指令和终端界面。在日常的使用中,我们可以通过一些技巧和工具更好地利用这些指令来提高效率和减少工作量。本文将带你领略一些常用的Linux指令技巧,并通过实例演示它们的具体应用。
一、grep指令的高级用法
grep指令是Linux系统中最常用的文本搜索工具之一,它可以通过正则表达式来快速定位特定的关键词或文件。除了常规用法,grep还有很多高级技巧可以提高搜索效率。下面我们将介绍其中几个常用的技巧:
1.使用-i参数来忽略大小写
grep -i “keyword” file
这个指令可以匹配在file文件中出现的所有关键词,并忽略大小写。这对于在某些情况下需要搜索大量文本或日志文件时非常有用。
2.使用-v参数来排除特定的关键词
grep -v “keyword” file
这个指令可以在file文件中搜索所有不含有关键词的行。它对于需要在新闻报道、技术文档等大型文本中排除一些特定关键词时非常有用。
3.使用-e参数来匹配多个正则表达式
grep -e “regexp1” -e “regexp2” file
这个指令可以用来同时匹配多个正则表达式。它对于需要在大型配置文件、代码文件中匹配多个模式时非常有用。
4.使用-B、-C和-A参数来输出相关的上下文行
grep -A 2 -B 2 “keyword” file
这个指令可以输出匹配关键词的前2行和后2行,这对于在大型日志文件中断点排查问题非常有用。
二、awk指令的基本用法
awk是一种用于对文本和数据进行分析和处理的强大工具,它可以通过读取文件、流等来快速处理数据。下面我们将介绍一些常用的awk指令,以及它们的应用场景。
1.使用FS参数指定分隔符
awk -F “delimiter” ‘{print $1,$2}’ file
这个指令可以用来指定数据源的分隔符。常见的分隔符包括空格、Tab、逗号等。它对于在大型日志文件、CSV文件中快速筛选出特定字段非常有用。
2.使用NR参数来确定行数
awk ‘NR==3’ file
这个指令可以用来输出文件的第三行。这对于在大型配置文件中快速定位需要修改的行非常有用。
3.使用NF参数来获取每行的字段数
awk ‘{print NF}’ file
这个指令可以用来输出每行的字段数。它对于在大型数据文件中快速分析数据的结构和字段数量非常有用。
4.使用printf来格式化输出
awk ‘{printf “%-20s %-20s %-20s\n”,$1,$2,$3}’ file
这个指令可以用来格式化输出文件内容。它对于在大型数据文件中输出指定的字段且格式统一时非常有用。
三、sed指令的应用技巧
sed是一种流编辑器,它可以用于对文本进行修改、删除、替换等操作。下面我们将介绍一些常用的sed指令,以及它们的应用场景。
1.使用s命令进行替换
sed ‘s/old/new/g’ file
这个指令可以用来将文件中的指定字符串替换为新的字符串。它对于在大型配置文件、代码文件中不同版本的差异修改非常有用。
2.使用d命令删除行
sed ‘3d’ file
这个指令可以用来删除文件中的第三行。它对于在大型文本文件中删除指定的行非常有用。
3.使用p命令进行输出
sed -n ‘2,4p’ file
这个指令可以用来输出文件中的第二行到第四行。它对于在大型数据文件中输出指定内容时非常有用。
4.使用i命令进行插入
sed ‘2i\new line’ file
这个指令可以在文件的第二行之前插入新的一行。它对于在大型文本文件中需要添加特定内容时非常有用。
本文介绍了一些常用的Linux指令技巧,并通过实例演示了它们的具体应用。当然,这并不是全部,Linux系统中还有很多强大的指令和工具可以加快你的工作效率,希望读者能够深入学习和应用它们,发挥出Linux系统的更大潜力。
相关问题拓展阅读:
- 如何在Linux中使用awk命令
- Linux里面AWK begin作用是什么?
- linux三剑客的基本使用——grepsedawk
如何在Linux中使用awk命令
awk:用于缓脊吵一行中分成数个“字段”来处理。适合处理
小型数据。
运行模式:awk
‘条件类型1{动作1}
条件类型2{动作2}
…’
filename
#
last
|
awk
$1
“\t”
$3}’
大于
=
大于或等于
gawk
3、awk ‘/abc/’ file.txt 显示文件中包含abc行。类似grep abc a.txt
4、awk ‘{print NR,NF,$1,$NF,}’ file.txt按空格分隔列,显示当前记录号、域数和每一行的之一列和最后一列。
-F参数可以设置分割参数,例如按:分割
awk -F: ‘{print $1}’ /etc/passwd
或者cat file|awk -F “|” ‘{print $1}’
5、awk编程语言
cat v.txt|awk ‘{print length($1)}’
6、awk中使用NR和FNR,一般在awk处理多个文件时,NR==FNR才有意义
NF 当前记录中的字段数。
NR 当前型磨记录数。
FNR同NR,但相对于当前文件。
awk ‘{print NR,FNR}’ test.txt test2.txt
awk ‘{if(NR==FNR){a=$1;}else{print $1,a}}’ b.txt a.txt
7、打此租备印奇数行与偶数行
awk ‘NR%2’ test.txt
awk ‘!(NR%2)’ test.txt
8、杀死森毁tomcat的stop.sh脚本
#!/bin/sh
ps -ef| grep tomcat |grep -v grep | awk ‘{print $2}’ |xargs kill -9
9、打印前7列
cat a.txt|awk ‘{NF=7}1’ >> b.txt
tail -f access.log|awk ‘NF=7′ OFS=’\t’ >> b.txt
Linux里面AWK begin作用是什么?
BEGIN{}模块在awk读取文件之前就执行,一宽物前般用来定义awk的内置变量(预定义变慎清量,eg:FS,RS)蚂局
awk 后面BEGIN为 初始化代码块,在对每一行进行处理之前,主要是引用全局变量,设置FS分隔符
OFS输出字段分隔符
# echo a,b,c | awk -F, ‘BEGIN{OFS=’-‘}{print $1,$2,$3}’
a-b-c
白话理解:指磨凳基定各个瞎谨字段输粗亮出分隔符的。上例中以-作为输出字段分隔符。
非常强大的文本操纵工具,sed,awk,grep 这个三个命竖宽令 都是操作文本文件的 unix系统有几亮核个非常命令的特点: 1. 对于内核而言,unix文件都是敬纤掘字
linux三剑客的基本使用——grepsedawk
grep、sed、awk是linux功能非常强大的三个命令,grep是查找过滤文本,sed是对文本进行编辑替换,awk是对文本进行分析报告。
最简单的理解就是找什么东西用grep,想修改什么内容用sed,想格式化内容用awk。
创建一个文件名为grep_text.txt的文件,并放入内容:
SillyMadman is both a madman and a fool.
Everyone agrees with this sentence.
我要查找在grep_text.txt文件里有Silly的行
命令是: grep Silly grep_text.txt
会返回内容:SillyMadman is both a madman and a fool.
也可以带以下参数,这些我认为可能容易用到的参数,其它的参数需要另行查找
文档,比如可以使用正则进行匹配。
内容相关的
-B, –before context=NUM显示所在行之前的行数
-A, –after context=NUM显示所在行之后的行数
-C, –context=NUM打印输出上下文的行数
过滤内容相关的参数:
-i, –忽略大小写区分
-w,–匹配查找的整个单词
-x,–匹配查找的整行文本
-v, –过滤掉匹配的内容
输出内容相关的参数
-n, –行号打印带有输出行的行号
比如,我要查找在grep_text.txt文件里不区分大小写查找sillymadman,并显示行号和匹配文本纯此的下一行,那么我可以用以下命令查找
grep sillymadman grep_text.txt -i -n -A1
内容返回为
1:SillyMadman is both a madman and a fool.
2-Everyone agrees with this sentence.
总体而言grep的使用方式就是
grep (查找的内容) (文件名)
grep也经常搭配管道符号做弊迅”|”使用,比如我要查询某程序的进程,并去掉查找进程本身,那么命令为
ps -ef | grep program_name | grep -v grep
再创建一个文件名为sed_text.txt的文件,并放入内容:
SillyMadman is both a madman and a fool.
Everyone agrees with this sentence.
我想要在之一行下面添加一句:woshishazi
命令是:sed ‘1a\woshishazi’ sed_text.txt
返回内容为:
SillyMadman is both a madman and a fool.
woshishazi
Everyone agrees with this sentence.
但是以上这个命令不会修改原文件,如果需要,需要加上-i
sed -i ‘1a\woshishazi’ sed_text.txt
上面a是代表append,从指定行后面新的一行添加数据,还有其他操作
操作有以下这些
a :从下面一行新增
i :从上面一行插入,
d :删除
c :整行替换
p :打印
s :对指定内容进行替换
下面稍卜晌微举下例:
a: sed ‘1a\woshishazi’ sed_text.txt 从之一行后面添加
i: sed ‘1i\woshishazi’ sed_text.txt 从之一行前面插入
d: sed ‘1d’ sed_text.txt 删除之一行
c: sed ‘1c\woshishazi’ sed_text.txt 替换之一行内容为woshishazi
p: sed -n ‘1p’ sed_text.txt 打印之一行,一般搭配-n使用,其他内容就不会再展示
s:这个相对复杂一点需要详细说明一下
sed的参数为 ‘s/要被替换的内容/新的内容/g’
行是一个可选项,可以选择具体的行进行替换
g代表替换所有匹配到的内容,也可以改为数字,表示第几次匹配到时进行替换
sed ‘s\SillyMadman\shafengzi\g’ sed_text.txt ,将所有SillyMadman替换为shafengzi
输出结果为:
shafengzi is both a madman and a fool.
Everyone agrees with this sentence.
最后再创建一个文件名为awk_text.txt的文件,并放入内容:
1 a
2 b
3 c
4 d
5 f
以空白符作为
分隔符
这个文本相当于每一行有两个字段。
那么打印之一个字段时 awk ‘{print 0的话,则代表打印所有字段
awk默认以空白符作为分隔符,也可以指定分割符通过-F
awk -F: ‘{print $1}’ awk_text.txt,以“:”作为作为分隔符
那么返回内容就为
1 a
2 b
3 c
4 d
5 f
相当于只有一列或者说一个字段
然后还可以对前面加上一个正则对行进行匹配内容
awk ‘/a/{print 2 ~ /a/){print $1}’ awk_text.txt
返回内容为
关于在linux上 awk的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。