egre
p
-
n 'gd|good|dog' regular_express.txt
()
意义:找出『群组』字符串
范例:搜寻
(glad)
或
(good)
这两个字符串,因为
g
与
d
是重复的,所以,
我就可以½
la
与
oo
列
于
( )
当中,并以
|
来分隔开来,就可以啦!
egrep
-
n 'g(la|oo)d' regular_express.txt
()+
意义:多个重复群组的判别
范例:½『
AxyzxyzxyzxyzC
』用
echo
½出,然后再使用如下的方法搜寻一下!
echo
'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'
上面的例子意思是说,我要找开头是
A
½尾是
C
,中间有一个以上的
"xyz"
字符串的意思~
以上这些就是延伸型的正规表示法的特殊字符。另外,要特别强调的是,那个
!
在正规表示法当中
并不是特殊字符,
所以,如果你想要查出来文件中含有
!
与
>
的字行时,可以这样:
grep -n '[!>]' regular_express.txt
这样可以了½了吗?常常看到有陷阱的题目写:『反向选择这样对否?
'[!a-z]'
?』,
呵呵!是错的
呦~要
'[^a-z]
才是对的!至于更多关于正规表示法的½½文章,请参考文末的参考数据
(
注
2
)
11.4
文件的格式化与相关处理
½下来让我们来½文件½行一些简单的编排吧!底下这些动作可以½你的讯息½行排版的动作,
不
需要重新以
vim
去编辑,透过数据流重导向配合底下½绍的
printf
功能,以及
awk
指令,
就可以
让你的讯息以你想要的模样来输出了!试看看吧!
11.4.1
格式化打印:
printf
在很多时候,我们可能需要½自己的数据给他格式化输出的!
举例来说,考试卷分数的输出,姓名
与科目及分数之间,总是可以稍微作个比½漂亮的版面配置吧?
例如我想要输出底下的样式:
Name Chinese English Math Average
DmTsai 80 60 92 77.33
VBird 75 55 80
70.00
Ken 60 90 70 73.33
上表的数据主要分成五个字段,各个字段之间可使用
tab
或空格键½行分隔。
请½上表的资料转存
成为
printf.txt
档名,等一下我们会利用这个文件来½行几个小练习的。
因为每个字段的原始数据长
度其实并非是如此固定的
(Chinese
长度就是比
Name
要多
)
,
而我就是想要如此表示出这些数据,
此时,就得需要打印格式管理员
printf
的帮忙了!
printf
可以帮我们½资料输出的½果格式化,而
且而支持一些特殊的字符~底下我们就来看看!
[dmtsai@study ~]$
printf '
打印格式
'
实际内
容