文本处理及正则表达式
title: 文本處理及正則表達式
date: 2018-10-14 18:18:18
tags:
- VIM
- Find
- Sed
- 正則表達式
- shell腳本
文本處理及正則表達式
文件查看
文件查看命令:
cat,tac,rev
cat [OPTION]… [FILE]…
-E:顯示行結束符$
-n:對顯示出的每一行進行編號
-A:顯示所有控制符
-b:非空行編號
-s:壓縮連續的空行成一行
tac
rev
文件查看
more: 分頁查看文件
more [OPTIONS…] FILE…
-d: 顯示翻頁及退出提示
less:一頁一頁地查看文件或STDIN輸出
查看時有用的命令包括:
/文本搜索文本
n/N跳到下一個或上一個匹配
less命令是man命令使用的分頁器
顯示文本前或后行內容*********************************************
head [OPTION]… [FILE]…
-c #: 指定獲取前#字節
-n #: 指定獲取前#行
-#:指定行數
tail [OPTION]… [FILE]…
-c #: 指定獲取后#字節
-n #: 指定獲取后#行
-#:同上
-f: 跟蹤顯示文件fd新追加的內容,常用日志監控
相當于–follow=descriptor
-F: 跟蹤文件名,相當于–follow=name --retry
tailf類似tail –f,當文件不增長時并不訪問文件
###按列抽取文本cut和合并文件paste***************************************CUT
cut [OPTION]… [FILE]…
-d DELIMITER: 指明分隔符,默認tab
-f FILEDS:
…#: 第#個字段
…#,#[,#]:離散的多個字段,例如1,3,6
…#-#:連續的多個字段, 例如1-6
混合使用:1-3,7
-c按字符切割
–output-delimiter=STRING指定輸出分隔符
cut和paste
顯示文件或STDIN數據的指定列
cut-d:-f1/etc/passwd
cat /etc/passwd|cut-d:-f7
cut-c2-5/usr/share/dict/words
paste 合并兩個文件同行號的列到一行
paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默認用TAB
-s : 所有行合成一行顯示
示例:
paste f1 f2
paste -s f1 f2
收集文本統計數據wc*****************************************WC
計數單詞總數、行總數、字節總數和字符總數
可以對文件或STDIN中的數據運行
wcstory.txt
392371901story.txt
行數字數字節數
常用選項
-l只計數行數
-w只計數單詞總數
-c只計數字節總數
-m只計數字符總數
-L顯示文件中最長行的長度
文本排序sort
把整理過的文本顯示在STDOUT,不改變原始文件
sort[options]file(s)
常用選項
-r執行反方向(由上至下)整理
-R隨機排序
-n執行按數字大小整理
-f選項忽略(fold)字符串中的字符大小寫
-u選項(獨特,unique)刪除輸出中的重復行
-t c選項使用c做為字段界定符
-k X選項按照使用c字符分隔的X列來整理能夠使用多次
uniq
uniq命令:從輸入中刪除前后相接的重復的行
uniq[OPTION]… [FILE]…
-c: 顯示每行重復出現的次數
-d: 僅顯示重復過的行
-u: 僅顯示不曾重復的行
注:連續且完全相同方為重復
常和sort 命令一起配合使用:
sort userlist.txt | uniq-c
比較文件
比較兩個文件之間的區別
difffoo.conffoo2.conf
5c5
< use_widgets=no
.>use_widgets=yes
注明第5行有區別(改變)
取出IP地址的幾種方法: *************************************(重點)
ifconfig | sed -r ‘2!d;s/.inet (addr:)?//;s/ .//’ 6和7通用的取出IP地址
ifconfig eth0 | head -2|tail -1| tr -dc '[0-9]. ’ |tr -s ’ ’ |cut -d" " -f2 6系統上
ifconfig eth0|sed -n ‘2p’|sed ‘s@.inet @@’|sed ‘s@ netmask.$@@’ 提取出7上的IP地址,其中@@為分隔符
ifconfig ens33|sed -nr '2s/.t (.) net./\1/gp’ 擴展的正則表達式取出IP,()為分組,只有一個括號,所以后面寫1
ifconfig ens33|sed -nr '2s/(.t) (.)( net.)/\2/gp’ 擴展的正則表達式取出IP,()為分組,有三個括號,所以后面寫2留第二個
ifconfig | sed -nr "s/.inet (.) netmask./\1/p" | head -n 1 取出7的IP
ifconfig | sed -nr "s/.inet (.) netmask.*/\1/p" 取出7的三個網卡IP
查詢系統信息 ***********************************************重點
…#RED is content color
…#依次顯示出
…#系統版本
…#內核版本
…#CPU型號
…#內存大小
…#最大磁盤利用率
…#hostname
…#IP地址
RED="\033[1;31m"
COLOREND="\033[0m"
echo -e “OS version is RED‘cat/etc/centos?release‘RED`cat /etc/centos-release`RED‘cat/etc/centos?release‘COLOREND”
echo -e “kernel version RED‘uname?r‘RED`uname -r`RED‘uname?r‘COLOREND”
echo -e “The cpu type is KaTeX parse error: Double superscript at position 42: … name'|tr -s ' '?|cut -d: -f2`COLOREND”
echo -e “The memory is KaTeX parse error: Double superscript at position 31: …ep Mem|tr -s ' '? ':' |cut -d: -…COLOREND”
echo -e “The max disk used is RED‘df∣grep/dev/sd∣tr?s""":"∣cut?d:?f5∣sort?nr∣head?1‘RED`df |grep /dev/sd|tr -s " " ":"|cut -d: -f5|sort -nr|head -1`RED‘df∣grep/dev/sd∣tr?s""":"∣cut?d:?f5∣sort?nr∣head?1‘COLOREND”
echo -e “The hostname is REDREDRED(hostname)$COLOREND”
echo -e “The ipaddr is RED‘ifconfig∣head?2∣tail?1∣tr?s""":"∣cut?d:?f3‘RED`ifconfig|head -2|tail -1|tr -s " " ":"|cut -d: -f3`RED‘ifconfig∣head?2∣tail?1∣tr?s""":"∣cut?d:?f3‘COLOREND”
unset RED COLOREND
Linux文本處理三劍客
grep:文本過濾(模式:pattern)工具
grep, egrep, fgrep(不支持正則表達式搜索)
sed:stream editor,文本編輯工具
awk:Linux上的實現gawk,文本報告生成器
grep*************************************************(重點)
grep: Global search REgularexpression and Print out the line
作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行
模式:由正則表達式字符及文本字符所編寫的過濾條件
grep [OPTIONS] PATTERN [FILE…]
grep root /etc/passwd
grep "USER"/etc/passwdgrep′USER" /etc/passwd grep 'USER"/etc/passwdgrep′USER’ /etc/passwd
grep whoami /etc/passwd
grep命令選項
–color=auto: 對匹配到的文本著色顯示
-v: 顯示不被pattern匹配到的行
-i: 忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串
-q: 靜默模式,不輸出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:實現多個選項間的邏輯or關系
grep –e ‘cat ’ -e ‘dog’ file
-w:匹配整個單詞
-E:使用ERE
-F:相當于fgrep,不支持正則表達式
-ffile: 根據模式文件處理
正則表達式*************************************重點
REGEXP:Regular Expressions,由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能
程序支持:grep,sed,awk,vim, less,nginx,varnish等
分兩類:
基本正則表達式:BRE
擴展正則表達式:ERE
grep -E, egrep
正則表達式引擎:
采用不同算法,檢查處理正則表達式的軟件模塊
PCRE(Perl Compatible Regular Expressions)
元字符分類:字符匹配、匹配次數、位置錨定、分組
man 7 regex
基本正則表達式元字符
字符匹配:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即A-Z, a-z
[:lower:] 小寫字母[:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:]水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字[:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
通配符是通配的文件名
正則表達式是配的字符串,文件的內容
【wang】 匹配這四個字符其中的一個
grep “[123]” /etc/passwd查詢passwd文件夾里包含123中一個數字的文件
grep -v “[123]” /etc/passwd查詢passwd文件夾里不包含123中一個數字的文件
grep “[^123]” /etc/passwd查詢passwd文件夾里除了123中一個數字的文件
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
‘* 匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.*任意長度的任意字符
?匹配其前面的字符0或1次
+匹配其前面的字符至少1次
{n}匹配前面的字符n次
{m,n}匹配前面的字符至少m次,至多n次
{,n}匹配前面的字符至多n次
{n,}匹配前面的字符至少n次
位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側 grep “^bash” /etc/passwd
$ 行尾錨定,用于模式的最右側 grep "bash"/etc/passwdPATTERN" /etc/passwd ^PATTERN"/etc/passwdPATTERN 用于模式匹配整行
^$ 空行
1$ 空白行
< 或\b詞首錨定,用于單詞模式的左側(單詞不能包含數字、_、其他字母開頭)
> 或\b詞尾錨定,用于單詞模式的右側
<PATTERN>匹配整個單詞**************************************************
正則表達式
分組:() 將一個或多個字符捆綁在一起,當作一個整體處理,如:(root)+
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
\1表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
示例:(string1+(string2))
\1 :string1+(string2)
\2 :string2
后向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身
或者:|
示例:a|b: a或b C|cat: C或cat (C|c)at:Cat或cat
元字符
^ 行首
$行尾
.任意單一字符
[][]內任意單一字符
[^]除[]內任意單一字符
**前面字符重復不確定次數
++前面字符重復一次以上不確定次數
??前面字符重復0或1次
\轉義符
.*任意長度字符
{n}前面字符重復n次
{n,}前面字符重復n次以上
{m,n}前面字符重復m次和n次之間
[:alnum:]字母和數字
[:alpha:]代表任何英文大小寫字符,亦即A-Z, a-z
[:lower:]小寫字母
[:upper:]大寫字母
[:blank:]水平空白字符(空格和制表符)
[:space:]所有水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:]不可打印的控制字符(退格、刪除、警鈴…)
[:digit:]十進制數字
[:graph:]可打印的非空白字符
[:print:]可打印字符
[:punct:]標點符號
[:xdigit:]十六進制數字
egrep及擴展的正則表達式
egrep= grep -E
egrep[OPTIONS] PATTERN [FILE…]
擴展正則表達式的元字符:
字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
次數匹配:
*匹配前面字符任意次
?0或1次
+1次或多次
{m}匹配m次
{m,n}至少m,至多n次
位置錨定:
^行首
$行尾
<, \b語首
>, \b語尾
分組:()
后向引用:\1, \2, …
或者:
a|ba或b
C|catC或cat
(C|c)atCat或cat
vim簡介*************************************重點
見PDF6中第32,68,69頁圖片
vi: Visual Interface,文本編輯器
文本:ASCII, Unicode
文本編輯種類:
行編輯器: sed
全屏編輯器:nano, vi
vim-Vi Improved
其他編輯器:
gedit一個簡單的圖形編輯器
gvim一個Vim編輯器的圖形版本
打開文件
vim [OPTION]… FILE…
+#打開文件后,讓光標處于第#行的行首,+默認行尾
+/PATTERN打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
–b file 二進制方式打開文件
–d file1 file2… 比較多個文件
-m file 只讀打開文件
ex file 或vim –e 直接進入ex模式
如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它
模式轉換
命令模式–> 插入模式
iinsert, 在光標所在處輸入
I在當前光標所在行的行首輸入
aappend, 在光標所在處后面輸入
A在當前光標所在行的行尾輸入
o在當前光標所在行的下方打開一個新行
O在當前光標所在行的上方打開一個新行
插入模式--------> 命令模式
ESC
命令模式--------> 擴展命令模式
:
擴展命令模式--------> 命令模式
ESC,enter
擴展命令模式:
:q退出
:q!強制退出,丟棄做出的修改
:wq保存退出
:x保存退出
命令模式
ZZ保存退出
ZQ不保存退出
命令模式光標跳轉
字符間跳轉:
h: 左l: 右j: 下k: 上
.#COMMAND:跳轉由#指定的個數的字符******************
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
。#COMMAND:由#指定一次跳轉的單詞數
當前頁跳轉:
H:頁首M:頁中間行L:頁底
zt:將光標所在當前行移到屏幕頂端
zz:將光標所在當前行移到屏幕中間
zb:將光標所在當前行移到屏幕底端
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字符
0: 跳轉至行首
$: 跳轉至行尾
行間移動:
.#G、擴展命令模式下:# 跳轉至由#指定行
G:最后一行
1G, gg: 第一行
句間移動:
):下一句(:上一句
段落間移動:
}:下一段{:上一段
命令模式翻屏操作
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
命令模式操作**********************************************重點
刪除命令:
d: 刪除命令,可結合光標跳轉字符,實現范圍刪除
d$: 刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:
de:
db:
.#COMMAND
dd: 刪除光標所在的行
.#dd:多行刪除
D:從當前光標位置一直刪除到行尾,等同于d$
復制命令(y, yank):
y: 復制,行為相似于d命令
y$
y0
y^
ye
yw
yb
.#COMMAND
yy:復制行
.#yy: 復制多行
Y: 復制整行
命令模式
di" 光標在”“之間,則刪除”“之間的內容
yi( 光標在()之間,則復制()之間的內容
vi[ 光標在[]之間,則選中[]之間的內容
dtx刪除字符直到遇見光標之后的第一個x 字符
ytx復制字符直到遇見光標之后的第一個x 字符
擴展命令模式:地址定界********************按ESC進入命令模式,再按:進入擴展命令模式
地址定界
:start_pos,end_pos
# 具體第#行,例如2表示第2行#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數 :2,+3 表示2到5行 . 當前行‘最后一行.,‘` 最后一行 .,`‘最后一行.,‘`-1 當前行到倒數第二行
% 全文, 相當于1,$
/pat1/,/pat2/
從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/
/pat/,$
使用方式:后跟一個編輯命令
d
y
w file: 將范圍內的行另存至指定文件中
r file:在指定位置插入指定文件中的所有內容
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
s: 在擴展模式下完成查找替換操作************************************重點
格式:s/要查找的內容/替換為的內容/修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換為其它字符,例如
s@/etc@/var@g
s#/boot#/#i
命令模式:撤消更改
u撤銷最近的更改
#u撤銷之前多次更改
U撤消光標落在這行后所有此行的更改
按Ctrl-r重做最后的“撤消”更改
. 重復前一個操作
n.重復前一個操作n次
多文件模式
vim FILE1 FILE2 FILE3 …
:next 下一個
:prev前一個
:first 第一個
:last 最后一個
:wall 保存所有
:qall退出所有
:wqall
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc***********************
個人:~/.vimrc
擴展模式:當前vim進程有效
(1) 行號
顯示:set number, 簡寫為set nu
取消顯示:set nonumber, 簡寫為set nonu
(2) 忽略字符的大小寫
啟用:set ic
不忽略:set noic
(3) 自動縮進
啟用:set ai
禁用:set noai
(4) 智能縮進
啟用:smartindent簡寫set si
禁用:set nosi
(5) 高亮搜索
啟用:set hlsearch
禁用:set nohlsearch
(6) 語法高亮
啟用:syntax on
禁用:syntax off
(7) 顯示Tab和換行符^I 和$顯示
啟用:set list
禁用:set nolist
(8) 文件格式
啟用windows格式:set fileformat=dos
啟用unix格式:set fileformat=unix
簡寫:set ff=dos|unix
(9) 設置文本寬度
set textwidth=65 (vimonly)
set wrapmargin=15
(10) 設置光標所在行的標識線
啟用:set cursorline,簡寫cul
禁用:set no cursorline
(11) 復制保留格式
啟用:set paste
禁用:set nopaste
SHELL腳本*********************************************重點
創建shell腳本
第一步:使用文本編輯器來創建文本文件
第一行必須包括shell聲明序列:#!
.#!/bin/bash
添加注釋
注釋以#開頭
第二步:運行腳本
給予執行權限,在命令行上指定腳本的絕對或相對路徑
直接運行解釋器,將腳本作為解釋器程序的參數運行
腳本規范
腳本代碼開頭約定
1、第一行一般為調用使用的語言
2、程序名,避免更改文件名為無法找到正確的文件
3、版本號
4、更改后的時間
5、作者相關信息
6、該程序的作用,及注意事項
7、最后是各版本的更新簡要說明
shell腳本示例
#!/bin/bash
#------------------------------------------
#Filename: hello.sh
#Revision: 1.1
#Date: 2017/06/01
#Author: wang
#Email: wang@gmail.com
#Website: www.magedu.com
#Description: This is the first script
#------------------------------------------
#Copyright: 2017 wang
#License: GPL
echo “hello world”
.vimrc文件在根目錄下,修改:vim .vimrc 文件
可以修改vim的腳本注釋作者等信息*******************************************
局部變量
變量賦值:name=‘value’
可以使用引用value:
(1) 可以是直接字串; name=“root”
(2) 變量引用:name="$USER"
(3) 命令引用:name=COMMAND name=(COMMAND)變量引用:(COMMAND) 變量引用:(COMMAND)變量引用:{name} $name
“”:弱引用,其中的變量引用會被替換為變量值
‘’:強引用,其中的變量引用不會被替換為變量值,而保持原字符串
顯示已定義的所有變量:set
刪除變量:unset name
環境變量
變量聲明、賦值:
export name=VALUE
declare -x name=VALUE
變量引用:$name, ${name}
顯示所有環境變量:
env
printenv
export
declare -x
刪除變量:
unset name
退出狀態
進程使用退出狀態來報告成功或失敗
0 代表成功,1-255代表失敗
$? 變量保存最近的命令退出狀態
例如:
ping-c1-W1hostdown&>/dev/null
echo$?
退出狀態碼***********************************************************8
bash自定義退出狀態碼
exit [n]:自定義退出狀態碼
注意:腳本中一旦遇到exit命令,腳本會立即終止;終止退出狀態取決于exit命令后面的數字
注意:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決于腳本中執行的最后一條命令的狀態碼
算術運算
bash中的算術運算:help let
+, -, , /, %取模(取余), (乘方)
實現算術運算:
(1) let var=算術表達式
(2) var=[算術表達式](3)var=[算術表達式] (3) var=[算術表達式](3)var=((算術表達式))
(4) var=(exprarg1arg2arg3...)(5)declare–ivar=數值(6)echo‘算術表達式’∣bc乘法符號有些場景中需要轉義,如?bash有內建的隨機數生成器:(expr arg1 arg2 arg3 ...) (5) declare –ivar= 數值 (6) echo ‘算術表達式’ | bc 乘法符號有些場景中需要轉義,如* bash有內建的隨機數生成器:(exprarg1arg2arg3...)(5)declare–ivar=數值(6)echo‘算術表達式’∣bc乘法符號有些場景中需要轉義,如?bash有內建的隨機數生成器:RANDOM(0-32767)
echo [[[RANDOM%50] :0-49之間隨機數
增強型賦值:
+=, -=, =, /=, %=
let varOPERvalue
例如:let count+=3
自加3后自賦值
自增,自減:
例子:
let var+=1
let var++
let var-=1
let var–
let n=1+2
echo n3n=n 3 n=n3n=(2+3)
2
expr 3+4 錯誤
expr 3 + 4
7
expr為命令 3+4為參數之間要有空格********************************
echo $[RANDOM%100+1] 取1-100之間的隨機數 **
RANDOM為隨機數,除以100得到的余數為0-99,+1后為1-100 *****
echo $? 查詢命令執行結果
& 與 交集****************************************************
| 或 并集
! 非
^ 異或 相同為0 不同為1
&& 短路與 兩條命令,第一條為真,則執行第二天2條看真假,第一條為假的情況下直接不執行命令
|| 短路或 兩條命令,第一條為假,則執行第二天2條看真假,第一條為真的情況下直接不執行命令
同或 相同為1 不同為0
[ “str1"!="str1" !="str1"!="str2” ] 判斷兩個字符串是否相同
bash +x 加sh腳本可以看到腳本運行的過程,可以檢查哪里出錯
export +定義的變量可使該變量在子進程中也生效
find -name +文件名 查找文件或者安裝包
bash的數值測試
-v VAR
變量VAR是否設置
數值測試:
-gt是否大于
-ge是否大于等于
-eq是否等于
-ne是否不等于
-lt是否小于
-le是否小于等于
Bash的文件屬性測試
文件大小測試:
-s FILE: 是否存在且非空
文件是否打開:
-t fd: fd文件描述符是否在某終端已經打開
-N FILE:文件自從上一次被讀取之后是否被修改過
-O FILE:當前有效用戶是否為文件屬主
-G FILE:當前有效用戶是否為文件屬組
Bash的文件測試
存在性測試
-a FILE:同-e
-e FILE: 文件存在性測試,存在為真,否則為假
存在性及類別測試
-b FILE:是否存在且為塊設備文件
-c FILE:是否存在且為字符設備文件
-d FILE:是否存在且為目錄文件
-f FILE:是否存在且為普通文件
-h FILE 或-L FILE:存在且為符號鏈接文件
-p FILE:是否存在且為命名管道文件
-S FILE:是否存在且為套接字文件
使用read命令來接受輸入
使用read來把輸入值分配給一個或多個shell變量
-p指定要顯示的提示
-s 靜默輸入,一般用于密碼
-n N指定輸入的字符長度N
-d‘字符’ 輸入結束符
-t N TIMEOUT為N秒
read從標準輸入中讀取值,給每個單詞分配一個變量
所有剩余單詞都被分配給最后一個變量
read -p “Enter a filename:“ FILE
bash如何展開命令行*****************************************重點
把命令行分成單個命令詞
展開別名
展開大括號的聲明({})
展開波浪符聲明(~)
命令替換$()和``)
再次把命令行分成命令詞
展開文件通配(*、?、[abc]等等)
準備I/0重導向(<、>)
運行命令
防止擴展
反斜線(\)會使隨后的字符按原意解釋
$echoYourcost:$5.00
Yourcost:$5.00
加引號來防止擴展
單引號(’)防止所有擴展
$(美元符號)-變量擴展
`(反引號)-命令替換
\(反斜線)-禁止單個字符擴展
!(嘆號)-歷史命令替換
Profile類
按功能劃分,存在兩類:
profile類和bashrc類
profile類:為交互式登錄的shell提供配置
全局:/etc/profile, /etc/profile.d/*.sh
個人:~/.bash_profile
功用:
(1) 用于定義環境變量
(2) 運行命令或腳本
Bashrc類
bashrc類:為非交互式和交互式登錄的shell提供配置
全局:/etc/bashrc
個人:~/.bashrc
功用:
(1) 定義命令別名和函數
(2) 定義本地變量
locate命令
locate KEYWORD
有用的選項
-i不區分大小寫的搜索
-n N只列舉前N個匹配項目
-r 使用正則表達式
示例
搜索名稱或路徑中帶有“conf”的文件
locate conf
使用Regex來搜索以“.conf”結尾的文件
locate -r ‘.conf$’
[:space:] ??
總結
以上是生活随笔為你收集整理的文本处理及正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: beego——模板处理
- 下一篇: 计算机部分选择怎么操作,计算机基础试题选