
本篇我们介绍了 grep 命令和正则表达式的基本使用,grep 是 linux 下的一个文本处理命令,配合正则表达式使用,其功能非常强大。本文通过实例代码给大家介绍了js使用正则表达式控制用户输入银行卡号及格式化的方法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧...。在使用 grep 时,如果想要开启扩展正则表达式,需要指定 -e 选项,而 egrep 命令则是默认支持扩展正则表达式。
关于
awk其实并不算一个工具,相当于是一个脚本语言,awk就是这个脚本语言的解释器,这是GNU手册中的定义:pattern scanning and processing language。本文就把它当成一个简单的文本流处理工具来用,虽然我们有了sed,但sed在处理一行中的各列(某种分隔符进行分隔的字符串)时远没有awk功能强大。awk也是以某种模式一行行地处理各列,但对于各列中的内容可以非常精确化地处理。awk会将所处理行中的各列分别赋给$1..$n,$0表示当前一整行。
awk的用法为:awk [可选项] '脚本' [INPUTFILES],或者处理awk脚本文件:awk [可选项] -f SCRIPTFILE [INPUTFILES]awk语言,当然awk也可以直接用于处理管道传递来的文本流
下面分别说一下这几部分:
可选项
awk的可选项非常多,这里只说几个常用的
脚本语句
awk的脚本语句格式通常为:'[条件判断1][命令1] [条件判断2][命令2]...'
脚本需要被放在单引号中,条件类型和命令都是可选的,当只有条件判断而没有命令时,则会输出符合条件的整行。当然如果只有命令而没有条件判断时,则对每一行按命令处理。命令及命令参数需要使用一对大括号括起来,最常用的命令就是print和printf,这两个命令其实都是linux内建的命令,prinf用于输出变量,类似与echo,默认在结尾输出换行。printf类似于C语言中的格式化输出函数printf,可以根据格式化输出参数来格式化输出,默认没有换行,所以如果需要换行就需要使用\n,不需要使用小括号,直接将需要。
先来举几个个简单的例子:
此处都是/etc/passwd文件为例
输出/etc/passwd中的第三列小于10的行:
awk -F: '$3<10' /etc/passwd
这里我们通过-F指定分隔符为:,因为/etc/passwd中的各行包含的内容都以:分隔,然后使用$3取第3列与数字10进行比较
输出passwd中各行第1列与第3列的内容:
awk -F: '{print $1,$3}' /etc/passwd
这里print后面跟的变量以逗号(,)分隔,默认输出结果以空格分隔awk语言,如果想要以其他方式分隔中间直接插入双引号引入的字符串即可,例如输出结果以->分隔:print $1"->"$3,不分隔:print $1$3
将第一列与第3列使用->连接并将第3列以16进制输出:
awk -F: '{printf "%s->%x\n", $1,$3}' /etc/passwd
awk模式扫描和处理语言
功能描述:
使用awk命令可以行读入文件,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk是一个强大的文本分析工具,相对于grep查找、sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。
命令语法:
awk[选项][文件]
awk[选项][程序][文件]
awk命令选项含义
-f<程序文件>
从指定程序文件读取AWK程序源
-F<文件系统>
使用指定文件系统为输入字段分隔符
-v<变量=值>
开始执行程序之前为变量值
-mf<值>
设置不同的内存限制值。f标志设置字段的最大数目
-mr<值>
设置不同的内存限制值。r标志设置最大记录大小
在程序的内部表示启用优化
运行在兼容模式下
--dump-variables=<文本>
显示全局变量、其类型值和最终值到文件的排序列表
--exec=<文本>
类似于-f选项,但这是选项的最后一个处理
扫描和解析AWK程序,并在标准输出上生成一个GNU.po格式文件
--non-decimal-data
在输入数据中识别八进制和十六进制值
--profile=<文本>
发送分析数据文件。默认值是awkprof.out
--re-interval

启用正则表达式匹配使用间隔表达式
--source=<程序文本>
使用指定程序文本作为AWK程序的源代码
--traditional
匹配传统的UNIX awk正则表达式
显示在标准输出上可用的选项相对简短摘要
--use-lc-numeric
当解析输入数据时强制使用语言环境的小数点字符
内置变量
内置变量
命令行参数个数
命令行参数排列
包含当前环境的值的数组
当前输入文件的名称
当前输入文件的输入记录数
输入字段分隔符,默认情况下为一个空格
在当前输入记录中的字段的数目
已读的记录数
输出字段分隔符
输出记录分隔符
输入记录分隔符,默认情况下为一个换行符
用于数字的输出格式
记录终止符
匹配第一个字符的索引
匹配字符串长度
字符用于分隔多个标在数组中的元素,默认情况下是“\034”
TEXTDOMAIN
awk程序的文本域
当前文件的ARGV索引正在处理中
在排POSIX系统上,指定使用“二进制”模式下所有的文件I/O
用于数字的转换格式,默认情况下是“%.6g”
IGNORECASE
控制所有的正则表达式和字符串操作区分大小写
提供数组的元素访问运行AWK程序有关信息
字符串常量
字符串常量
反斜线
alert字符,通常为ASCII BEL字符
退格键
换行符
水平制表符
垂直制表符
\xhex digits
字符由十六进制数字下面的\x中的字符串来表示
字面字符c
例如:只显示最近登录系统的5个用户
[root@localhost ~]# last -n 5 | awk '{print $1}'
root
root

root
reboot
root
wtmp
只显示/etc/passwd文件中的账户
[root@localhost ~]# cat /etc/passwd | awk -F: '{ print $1 }'
root
bin
daemon
adm
lp
sync
shutdown
halt
uucp
operator
games
gopher
ftp
nobody
dbus
usbmuxd
rpc
oprofile
vcsa
rtkit
abrt
hsqldb
avahi-autoipd
saslauth
postfix
apache
rpcuser
nfsnobody
haldaemon
gdm
ntp
pulse
tomcat
sshd
tcpdump
mysql
只显示/etc/passwd文件中的账户和账户对应的shell,账户与shell之间以[Tab]键分隔
[root@ubuntu]awk_test:$ cat /etc/passwd | awk -f ':' '{print $1}'。[kodango@devops awk_temp]$ awk -f: '{print $1}' /etc/passwd | head -3 。[root@localhost medesky]# cat /etc/passwd。
root/bin/bash
bin/sbin/nologin
daemon/sbin/nologin
adm/sbin/nologin

lp/sbin/nologin
sync/bin/sync
shutdown/sbin/shutdown
halt/sbin/halt
mail/sbin/nologin
uucp/sbin/nologin
operator/sbin/nologin
games/sbin/nologin
gopher/sbin/nologin
ftp/sbin/nologin
nobody/sbin/nologin
dbus/sbin/nologin
usbmuxd/sbin/nologin
rpc/sbin/nologin
oprofile/sbin/nologin
vcsa/sbin/nologin
rtkit/sbin/nologin
abrt/sbin/nologin
hsqldb/sbin/nologin
avahi-autoipd/sbin/nologin
saslauth/sbin/nologin
postfix/sbin/nologin
apache/sbin/nologin
rpcuser/sbin/nologin
nfsnobody/sbin/nologin
haldaemon/sbin/nologin
gdm/sbin/nologin
ntp/sbin/nologin
pulse/sbin/nologin
tomcat/sbin/nologin
sshd/sbin/nologin
tcpdump/sbin/nologin
mysql/sbin/nologin
只显示/etc/passwd文件中的账户和账户对应的shell,账户与shell之间以逗号分隔,在所有行添加列名name,shell,在最后一行添加blue,/bin/nosh。
[root@localhost ~]# cat /etc/passwd |awk -F: 'BEGIN {print"name,sehll"} {print $1","$7}'
name,sehll
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
shutdown,/sbin/shutdown
halt,/sbin/halt
mail,/sbin/nologin
uucp,/sbin/nologin
operator,/sbin/nologin
games,/sbin/nologin
gopher,/sbin/nologin

ftp,/sbin/nologin
nobody,/sbin/nologin
dbus,/sbin/nologin
usbmuxd,/sbin/nologin
rpc,/sbin/nologin
oprofile,/sbin/nologin
vcsa,/sbin/nologin
搜索/etc/passwd文件中有root关键字的所有行
[root@localhost ~]# awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
搜索/etc/passwd文件中有root关键字开头的所有行。
[root@localhost ~]# awk -F: '/root/' /etc/passwd
统计/etc/passwd文件,显示文件名,每行行号,每行的列数,对应的完整行内容
awk---grep---sed [root@book class]# df -k | awk '{print $1}' | grep -v 'none' | sed s"/\/dev\///g"。[root@tx3 ~]# awk 'begin{"date"| getline a}{print}end{print a}' cj。[root@mos download]# awk -f: {'print $1,$nf'} /etc/passwd|tail -1。
filename:/etc/passwd,linenumber:1,>columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-114805-1.html
衣服什么的