高效搜索:使用Linux grep命令进行.sh文件操作 (linux grep .sh)
在Linux系统中,Shell脚本文件(.sh文件)是一种重要的脚本文件类型。在进行Shell脚本编程或者Shell脚本维护、调试过程中,需要对Shell脚本文件进行快速、高效的搜索、匹配、替换等相应操作。在这种情况下,Linux grep命令是一种非常实用、高效的工具。本文将介绍如何使用Linux grep命令进行Shell脚本文件操作,从而提高工作效率和代码质量。
一、grep命令的概述
grep是一种常见的Linux操作系统命令,全称是“global regular expression print”(全局正则表达式打印)。在Linux系统中,grep命令通常用于在文件中查找符合特定模式的行,并输出匹配结果。grep命令的语法如下:
grep [选项] 模式 文件
其中,“选项”是可选的,用于指定grep命令的详细处理方式;“模式”是必选的,用于指定希望查找的文本模式;“文件”是必选的,用于指定希望查找的文件名。
二、使用grep命令进行Shell脚本文件操作
对于Shell脚本文件操作,grep命令可以用于以下几个方面:
1.查找包含关键字的Shell脚本文件
在Shell脚本文件中,有时需要查找包含某个关键字的文件。可以使用grep命令来查找包含关键字的Shell脚本文件,如下所示:
grep -r “关键字” *.sh
其中,“-r”选项表示递归地查找指定目录下的所有文件;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“关键字”表示需要查找的关键字。执行上述命令后,grep会在当前目录及其所有子目录中查找所有后缀名为.sh的Shell脚本文件,并输出包含关键字的文件名和匹配位置。
2.查找不包含关键字的Shell脚本文件
有时需要查找不包含某个关键字的Shell脚本文件。可以使用grep命令来查找不包含关键字的Shell脚本文件,如下所示:
grep -rL “关键字” *.sh
其中,“-r”选项表示递归地查找指定目录下的所有文件;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“关键字”表示需要查找的关键字。“-L”选项表示输出不包含关键字的文件名。执行上述命令后,grep会在当前目录及其所有子目录中查找所有后缀名为.sh的Shell脚本文件,并输出不包含关键字的文件名。
3.查找匹配指定模式的Shell脚本文件
有时需要查找匹配指定模式的Shell脚本文件。可以使用grep命令来查找匹配指定模式的Shell脚本文件,如下所示:
grep -r “模式” *.sh
其中,“-r”选项表示递归地查找指定目录下的所有文件;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“模式”表示需要查找的模式。执行上述命令后,grep会在当前目录及其所有子目录中查找所有后缀名为.sh的Shell脚本文件,并输出匹配指定模式的文件名和匹配位置。
4.查找不匹配指定模式的Shell脚本文件
有时需要查找不匹配指定模式的Shell脚本文件。可以使用grep命令来查找不匹配指定模式的Shell脚本文件,如下所示:
grep -rL “模式” *.sh
其中,“-r”选项表示递归地查找指定目录下的所有文件;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“模式”表示需要查找的模式。“-L”选项表示输出不匹配指定模式的文件名。执行上述命令后,grep会在当前目录及其所有子目录中查找所有后缀名为.sh的Shell脚本文件,并输出不匹配指定模式的文件名。
5.在目录中查找特定数量的匹配结果
有时需要查找限定数量的匹配结果。可以使用grep命令来在目录中查找特定数量的匹配结果,如下所示:
grep -r “关键字” *.sh | head -nN
其中,“-r”选项表示递归地查找指定目录下的所有文件;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“关键字”表示需要查找的关键字。“head -nN”表示输出前N行结果。执行上述命令后,grep会在当前目录及其所有子目录中查找所有后缀名为.sh的Shell脚本文件,并输出前N行匹配结果。
6.查找具有特定权限的Shell脚本文件
有时需要查找具有特定权限的Shell脚本文件。可以使用grep命令来查找具有特定权限的Shell脚本文件,如下所示:
ls -l *.sh | grep “权限”
其中,“ls -l”命令表示列出当前目录下所有文件及其详细权限;“*.sh”表示查找所有后缀名为.sh的Shell脚本文件;“权限”表示需要查找的特定权限。执行上述命令后,grep会在当前目录中查找所有后缀名为.sh的Shell脚本文件,并输出具有特定权限的文件名和权限信息。
三、
使用Linux grep命令进行Shell脚本文件操作,能够大大提高工作效率和代码质量。使用grep命令可以快速、高效地进行Shell脚本文件的搜索、匹配、替换等相关操作。在使用grep命令时,需要了解grep命令的基本语法和相关选项,根据不同的需求进行命令的组合和调用。通过熟练掌握Linux grep命令,可以轻松实现Shell脚本文件操作的各种需求,提高工作效率和代码质量。
相关问题拓展阅读:
- linux中grep命令的使用
- Linux中使用grep命令搜索文件名及文件内容的方法
- Linux 高级命令
linux中grep命令的使用
标准的写法是
ps aux|grep 2567|grep -v grep
1、linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索滚派文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、格式
grep
3、主要参数
主要参数:
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则大手贺表达式的开始行。
$: 匹配正则表达式的结束行。
\:到匹配正则表达式的行结束。
:单个字符,如即A符合要求。
:范围,如,即A、B、C一直到Z都符合要求。
。:所有的单个字符。
* :有字符,长度可以为0。
4、grep命令使用简单实例:
$ grep ‘test’d*
显示所有以d开头的文件中包含test的行。
$ grep ‘test’aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep‘\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
写错了。用grep 2567,grep不用=号的。
推荐awk
ps -aux |awk ‘$2~/32651/’
过滤可以用ps -aux |awk ‘$2!~/32651/’
grep 2567会显示出现2567这个字符串的所有行,你如果宏陪山每行都有PID,还要体现它干什么呢。
grep 是不会自动识别PID这些字段的,用=肯定没用,它不过是文字处理的最乱贺简单的模式识别程序而已。awk和sed比grep强大多了,蔽中在讲unix的书上grep一般是略带提的,但awk和sed就会着重讲。
grep
关键字
*
Linux中使用grep命令搜索文件名及文件内容的方法
从文件中搜索并显示缺高文件名
当你从不止一个的文件中搜索时,默认它将显示文件名:
代码如下:
grep
word
文件名
grep
root
/etc/*
示例输出:
代码如下:
/etc/bash.bashrc:
See
man
sudo_root
for
details.
/etc/crontab:17
*
*
*
*
root
cd
/
run-parts
–report
/etc/cron.hourly
/etc/crontab:25
*
*
*
root
test
-x
/usr/in/anacron
||
(
cd
/
run-parts
–report
/etc/cron.daily
)
/etc/crontab:47
*
*
root
test
-x
/usr/in/anacron
||
(
cd
/
run-parts
–report
/etc/cron.weekly
)
/etc/group:root:x:0:
grep:
/etc/gshadow:
Permission
denied
/etc/logrotate.conf:
create
0664
root
utmp
/etc/logrotate.conf:
create
0660
root
utmp
每行开始的之一个部分是文件名(如:/etc/crontab、/etc/group)。使用
-l
选项可以只显示文件名:
代码如下:
grep
-l
string
filename
grep
-l
root
/etc/*
示例输出:
代码如下:
/etc/aliases
/etc/arpwatch.conf
grep:
/etc/at.deny:
Permission
denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group
你也可以逆转输出;使用
-L
选项来输出禅物那些不匹配的文件的文件名:
代码如下:
grep
-L
word
filename
grep
-L
root
/etc/*
示例输出:
代码如下:
/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key
根据文件内容查找文件
输入以下命令:
代码如下:
grep
‘string’
*.txt
grep
‘main(‘
*.c
grep
‘#include’
*.c
grep
‘getChar*’
*.c
grep
-i
‘ultra’
*.conf
grep
-iR
‘ultra’
*.conf
其中
-i
:
忽略模式(匹配字符串
valid、
VALID、
ValID
)和输入文件(匹配
file.c
FILE.c
FILE.C)的大小写。
-R
:
递归读取每个目录下的所有文件。
高亮匹配到的模式
在搜索大量文件的时候你可以轻松地高亮模式:
代码如下:
$
grep
–color=auto
-iR
‘getChar();’
*.c
为查找到的模式显示文件名和行号
你也许需要显示文件名和行号:
代码如下:
$
grep
–color=auto
-iRnH
‘getChar();’
*.c
其中,
-n
:
在输出的每行前面添加以
开始的行号。
-H
:
为每个匹配打印文贺扮液件名。要搜索多个文件时这是默认选项。(LCTT
译注:-h
选项强制隐藏文件名;另外
-l
和
-L
选项用于仅显示匹配/不匹配的文件名,而
-H
和
-h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
代码如下:
$grep
–color=auto
-nH
‘DIR’
*
输出样例:
你也可以使用
find
命令:
代码如下:
$
find
.
-name
*.c
|
xargs
grep
main(
Linux 高级命令
echo “HelloWorld”
向控制台输出HelloWorld信息
Linux允许将命令执行结果重定向到一个文件,本应显示在终端上丛卜笑的内容保存到指定文件中。
ls > test.txt
test.txt 如果不存在,则创建,存在则覆盖其内容
注意: > 输出重定向会覆盖原来的内容, >> 输出重定向则会追加到文件的尾部
cat xxx.py 可以用来快速查看某个文件内容,输出到控制台
cat test.txt >> haha.txt 将test.txt的内容追加到haha.txt中
cat 1.txt 2.txt > 1_2.txt 将1.txt 2.txt内容合并到1_2.txt中
分屏显示:more
查看内容时,在信息过长无法在一屏上显示时,会出现弊差快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,从头开始,每次只显示一页,空格键显示下一页,b键上一页,按下q键退出显示,按下h键可以获取帮助。
more xxx.py
管道:一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。即管道左边的输出结果作为管道右侧的参数
cat info.txt | more
tree | more
::: warning
more管道符读到的内容只能前进,不能后退;只能使用空格或回车向下看,不能使用b回看
:::
Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接。
ln -s 源文件 链接文件
ln 源文件 链接文件
没有-s 选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,一般用于保护系统重要的文件。所以-s选项是更常见的形式。
::: warning 注意
如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
:::
find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
常用用法:
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:
在grep命令中输入字符串参数时,更好用引号或双引号括起来。
例如:
从某个文件搜索
搜索当前目录所有文件
常用选项说明:**
grep搜索内容串可以是正则表达式。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
grep常用正则表达式:
计算机中的数据经渗含常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式:
tar 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
常用参数:
注意:除了f需要放在参数的最后,其它参数的顺序任意。
常用命令:
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。也会见到缩写的.tgz这种扩展名。
gzip使用格式如下:
常用选项:
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项 -z 可以调用gzip实现压缩的功能,最终实行一个先打包后压缩的过程。
-z :指定压缩包的格式为 xxx.tar.gz
tar压缩:
tar zcvf xxx.tar.gz 文件1 文件2 …
tar解压:
tar zxvf xxx.tar.gz
解压到指定目录:
tar zxvf xxx.tar.gz -C target_dir/ (大写字母“C”)
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.bz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法
: tar -jcvf 压缩包包名 文件1 文件2… (例: tar jcvf bak.tar.bz2 *.c )
解压用法
: tar -jxvf 压缩包包名 (例: tar jxvf bak.tar.bz2 )
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件
:zip 目标文件(没有扩展名) 源文件
解压文件
:unzip -d 解压后目录文件 压缩文件
使用tree命令可以查看指定目录的树状结构
有时我们想知道被执行的命令在哪个目录,以方便切换或更新不同版本,如Python。可以使用 which 命令
文件内容为:123 aaa bbb哈
执行 echo “123 aaa bbb哈” > xxx.txt
wc -l xxx.txt 文件内容的行数1
wc -w xxx.txt 文件内容的单词数3
wc -c xxx.txt 文件内容的字节数15
wc xxx.txt 文件内容的行数,单词数,字节数1 3 15
wc -m xxx.txt 文件的字符数13
sed
是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用。一般用于自动编辑转换程序,动态调整文件内容。
sed ‘s/good/GOODS/’ file 替换每行之一个指定字符串(输出所有行)
sed -n ‘s/good/GOODS/p’ file 替换每行之一个指定字符串(只输出替换的行)
sed -i ‘s/good/GOODS/g’ file 替换所有指定字符串,并应用到文件
sed ‘2d’ file 删除第二行
sed ‘/^test/d’ 删除good开头的行
sed -n ‘3p’ file 打印第3行
显示当前时间 # Tue May 7 14:35:31 DST 2023
当前日期和时间 #:34:25
使用history命令可以查看之前输过的命令及其id,
使用 !id 的形式,可以快速执行指定历史命令
Linux命令大全:
linux grep .sh的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux grep .sh,高效搜索:使用Linux grep命令进行.sh文件操作,linux中grep命令的使用,Linux中使用grep命令搜索文件名及文件内容的方法,Linux 高级命令的信息别忘了在本站进行查找喔。