linux下的awk使用正则表达式,awk正则匹配规则
老铁们,大家好,相信还有很多朋友对于linux下的awk使用正则表达式和awk正则匹配规则的相关问题不太懂,没关系,今天就由我来为大家分享分享linux下的awk使用正则表达式以及awk正则匹配规则的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
一、正则表达式什么意思
1、正则表达式,regex或者regexp(有时称为有理表达式)是定义搜索模式的字符序列。通常这种模式通过字符串搜索算法用于字符串上的“查找”或“查找并替换”操作,或者用于输入验证。它是在理论计算机科学和形式语言理论中发展起来的一种技术。
2、这个概念产生于20世纪50年代,当时美国数学家斯蒂芬·科尔·克莱尼形式化了正规语言的描述。这一概念和Unix文本处理实用程序一起开始被普遍使用。自20世纪80年代以来,存在着不同的用于编写正则表达式语法,一种是POSIX标准,另一种是广泛使用的是Perl语法。
3、正则表达式用于搜索引擎、搜索和替换文字处理器和文本编辑器的对话框、文本处理实用程序(如sed和AWK)和词汇分析。许多程序设计语言提供regex功能,内置或通过库。
二、awk正则匹配规则
1、指在awk中使用正则表达式进行匹配的规则。awk中的正则表达式和普通正则基本一样,只不过在awk里需要将正则表达式用两个/包起来。点字符(.)可以匹配除了行结束字符的所有字符。下面是一些常用的正则表达式:
2、-点号(.):匹配除了换行符以外的任意字符。
3、-斜杠(/):用于分隔不同的模式。
4、-星号(*):匹配前面的子表达式零次或多次。
5、-加号(+):匹配前面的子表达式一次或多次。
6、-问号(?):匹配前面的子表达式零次或一次。
7、-竖线(|):匹配两个或多个子表达式中的一个。
8、-方括号([]):用于指定一个字符集合,匹配其中任意一个字符。
9、-大括号({}):用于指定一个分组,将匹配的内容分成若干组,以便对每一组进行操作。
三、linux运维工程师都需要具备哪些技能
?1、Linux系统基础:包括Linux的基础知识内容和命令使用,以及用户和权限等核心知识点,同时你还需要了解Linux进程、资源、任务、文件、软件包、磁盘等管理方法。
??2、网络服务:服务有很多种,每家公司都会用到不同的,但基础的服务肯定要掌握,如FTP、DNS、SAMBA、邮件等。其中LAMP和LNMP是必须要熟练,不止是会搭建,更要很熟悉里面的配置。同时,nginx和apache也要熟悉。
??3、Shell脚本和任意一门编程语言:Shel脚本基本用法以及进阶,从基础到精通,需要学习一些企业级常见脚本用法。另一个脚本语言可选Python或Perl。
??4、MySQL数据库:Linux用得最多绝对是MySQL,增删改查必须精通,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。
??5、云计算运维监控:云计算运维自动化ansible、puppet等运维自动化解决方案,企业级云计算0penstackKeystone、Glance、Nova核心组件、网络模块、块存储服务等。
四、gawk使用详解
gawk是GNU计划下的一个用于文本处理的工具,其语法类似于UNIX中的awk。下面是gawk的使用详解:
awk'pattern{action}'file
其中,pattern是匹配模式,可以是正则表达式,也可以是字符串等;action是具体的操作,可以是打印、替换、统计等操作;file是需要处理的文件名。
如果需要对多个文件进行操作,可以使用通配符,如:
awk'pattern{action}'*.txt
gawk提供了许多内置变量,常用的有:
-$1、$2、$3……:当前行的第1、2、3……个字段
可以在action中使用这些内置变量,如:
awk'{print"line"NR":"$0}'file.txt
gawk的模式匹配支持正则表达式、字符串等方式。
awk'/pattern/{action}'file.txt
awk'$1=="hello"{print$2}'file.txt
gawk内置了很多操作和函数,包括打印、替换、字符串操作、数学函数等。以下是一些常用的操作和函数:
-print:打印当前行或指定的内容,如:
awk'{print$1"\t"$2}'file.txt
awk'{sub(/old/,"new",$0);print$0}'file.txt
awk'{printf"%s\t%s\n",$1,$2}'file.txt
-toupper、tolower:将字符串转换为大写或小写
gawk支持if、while、for、do-while、switch等语句结构。使用方式与C语言类似。
gawk支持将结果输出重定向到其他文件中,如:
awk'{print$1}'file.txt>output.txt
gawk支持从命令行读取参数,并在程序中使用。使用方式如下:
awk-vvar=value'{printvar}'file.txt
其中,-v表示定义一个变量,var表示变量名,value表示变量值。
以上就是gawk的使用详解,希望对您有所帮助。
五、linux常用命令有哪些
Linux是我们开发人员必不可少的系统,也是经常接触到的。然而,Linux命令比较多,有些不常用也难记住。那么,我们如何更高效的使用Linux命令,而又不必全面地学习呢?今天就给大家分享一下我在开发过程中,比较常用、也比较实用的Linux命令。
查看文件内容或日志文件,相信几乎所有人都会接触到。其中,用得最多的就是head、tail和cat命令。
表示头部,查看最前面几行数据。
headtest.log:test.log文件前几行日志内容
head-n20test.log:查看test.log文件前20行日志内容
head-n-20test.log:查看test.log除了最后20行日志内容
表示尾部,查看最后几行或实时日志。
tail-ftest.log:实时查看test.log文件最后几行日志内容
tail-f-n20test.log:实时查看test.log文件最后20行日志内容
tail-n20test.log:查看test.log文件最后20行日志内容
tail-n+20test.log:查看test.log文件20行后的所有日志内容
cattest.log:查看test.log文件所有内容
同一台服务器不同目录之间复制文件或目录也是经常用到的。
cptest.log/home/geshan/logs:复制test.log文件到/home/geshan/logs/目录下
cptest.log/home/geshan/logs/cptest.log:复制test.log文件到/home/geshan/logs/目录下并重新命名为cptest.log
cp-rlogs//home/geshan/:复制logs目录及目录下所有文件到/home/geshan/目录下,此时该目录会有logs目录
cp-rlogs//home/geshan/testlogs/:复制logs目录及目录下所有文件到/home/geshan/testlogs/目录下,并把logs目录重新命名为testlogs,前提是/home/geshan/目录没有testlogs目录
注:-r或-R表示循环,循环目录下所有文件和目录。下面所有命令也是如此。
当我们需要从远程服务器复制某个文件或目录到本地登录的服务器时,大部分人想到先登录远程服务器下载该文件,然后再登录本地服务器再上传文件。这样是比较麻烦,效率也不高。
scplocal_fileremote_username@remote_ip:remote_folder
scplocal_fileremote_username@remote_ip:remote_file
scplocal_fileremote_ip:remote_folder
scplocal_fileremote_ip:remote_file
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变;第2个指定了文件名;第3,4个没有指定用户名,命令执行后默认与当前服务器用户名并需要输入用户密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名。
实例1:从本地服务器复制test.log至192.168.130.130服务器的/home/geshan/目录,并重新命名为
实例2:从本地服务器复制test.log至192.168.130.130服务器的/home/geshan/目录
scp-rlocal_folderremote_username@remote_ip:remote_folder
scp-rlocal_folderremote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;第2个没有指定用户名,命令执行后需要输入用户名和密码。
实例:从本地服务器/home/appuser/目录下的tomcat目录复制到192.168.130.130服务器的/home/geshan/目录命令:
2、从远程服务器复制到本地服务器
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
从192.168.130.130远程服务器的/home/geshan/路径下test.log文件复制到本地服务器/home/appuser/路径
scproot@192.168.130.130:/home/geshan/test.log/home/appuser/
实例:从192.168.130.130远程服务器的/home/geshan/路径下tomcat文件夹复制到本地服务器/home/appuser/路径
注:ip地址和路径之间(即冒号之间)没有任何空格,否则会报错。当第一次和另外一台服务通信(如复制文件),会提示是否信任,输入yes即可。
压缩和解压文件也是经常遇到的。如果下载一个目录下的所有文件,可以直接下载这个目录,但是直接下载目录的话,文件一旦很多,下载过程中很容易丢失文件,下载速度也比较慢。一般情况下是先压缩文件夹再下载。下面给大家介绍四种压缩和解压命令。
注:压缩为.gz文件源文件会消失如果想保留源文件,使用下面命令
压缩tomcat目录,并命名为tomcat.tar.gz文件
注:压缩目录时,需加-r,表示循环该目录下所有文件和目录。压缩多个文件或目录时,文件或目录之间需要空格。
压缩log文件目录并命名为log.zip:
压缩log1和log2目录并命名为log.zip:
压缩test1.log和test2.log文件并命名为log.zip:
同理,和zip命令类似,只需把zip改为rar即可。
Linux系统中文件和目录访问权限是不同的,通过些方式可以确定谁可以对该文件和目录进行相应的操作。
其中,文件或目录的访问权限分为只读,只写和可执行三种,分别代表可读、可写和可执行。
改变文件或目录所属的组。命令:
实例:把test.log文件所属的组修改为geshan组
把logs目录及该目录下所有文件所属的组修改为geshan组
更改某个文件或目录所属的用户。命令:
实例:把test.log文件所属用户修改为geshan用户
把logs目录及该目录下所有文件所属用户修改为geshan用户
用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。命令:
其中,mode有很多种表示含义,下面只对数字说明。大部分人看到mode有777或776等权限,这些表示什么呢?
为了方便,把mode改为abc,其中a,b,c各为一个数字,分别表示user、group及other的权限。r=4,w=2,x=1,r表示Read读,w表示Write写,x表示eXecute。
实例:把test.log文件修改可读写执行(即777)操作。
把logs目录及目录下所有文件修改为读写(666)操作。
在Linux系统中输入ll(两个小写LL),如果文件或目录为777(读写执行)权限,可看到最前面为-rwxrwxrwx。如果为666(读写)权限,可看到最前面为-rw-rw-rw。
注:一般修改文件或目录权限需要超级用户(root)进行修改,否则可能会报权限不足。
这些Linux命令是比较常用实用的命令,肯定会有用得到的时候,如果对你有所帮助,记得点赞收藏转发哦!
好了,文章到此结束,希望可以帮助到大家。
——————————————小炎智能写作工具可以帮您快速高效的创作原创优质内容,提高网站收录量和各大自媒体原创并获得推荐量,点击右上角即可注册使用
相关新闻推荐
- linux中ip的正则表达式,如何使用正则表达式匹配IP地址 2023-11-29
- linux下的awk使用正则表达式,awk正则匹配规则 2023-11-29
- linux下中文名的正则表达式,linux的grep命令,解释一下perl正则表达式在这里怎么用,以及语法 2023-11-29
- linuxgrep正则表达式删除某个字符,grep是指定的意思吗 2023-11-29
- linux7位数字正则表达式?linuxfind正则表达式 2023-11-29
- linux30分钟正则表达式 linux正则表达式 ;s^[ t]#是什么意思 2023-11-29