ç¨æ£åå¹é
å°±å¯ä»¥äºã
shellèæ¬regexæ£åè¡¨è¾¾å¼ å å符串æ¿æ¢
ä»»æå符
^è¡é¦å¹é
$è¡å°¾å¹é
^$表示空è¡,ä¸å«å符çè¡
^
$å¹é
åªæåä¸ªç©ºæ ¼çè¡
[0-9]
[a-zA-Z]
^[A-
Z]æ索以大ååæ¯å¼å¤´çè¡
[^A-Z]å¹é
大ååæ¯æå¤çä»»æå符
*表示å¹é
0个æè¥å¹²ä¸ªå符ï¼å¦:a*,表示å¹é
0个æè¥å¹²ä¸ªa;
aa*表示å¹é
è³å°1个a
.*æ¥è¡¨ç¤º0æè¥å¹²ä¸ªä»»æå符
e.e*表示å¹é
第ä¸ä¸ªeåæåä¸ä¸ªeä¹é´çä»»æå符
[-0-9]å¹é
ä¸
个è¿å符ææ°å
[]a-z]å¹é
ä¸ä¸ª]æè
åæ¯
\{min,max\}å¹é
ä»»ææ°ç®çå符串
[a-z]\{10\}åªå¹é
10个
a-zå符çå符串
s/.\{5\}$// å é¤æ¯è¡çæå5个å符
\(...\),næ¯1å°9çæ°å,表示åå¨ç¨çå¯åå¨,ç¨\næ¥å¼
ç¨åå¨å¯åå¨ä¸çå
容
^\(.\)\1å¹é
è¡é¦ç第ä¸ä¸ªå符,并å°è¯¥å符åå°1å·å¯åå¨ä¸,ç¶åå¹é
1å·å¯åå¨ä¸çå
容,è¿ç±\1çæè¿°ã该æ£å
表达å¼çæç»æææ¯,å¦æä¸è¡ç头两个å符ç¸å,å°±å¹é
ä»ä»¬ã
^\(.\).*\1$å¹é
ä¸è¡ä¸ç头ä¸ä¸ªå符(^.)è·æåä¸ä¸ªå符(\1$)ç¸
åçè¡ã.*å¹é
ä¸é´çææå
容
^\(...\)\(...\)è¡ä¸å¤´ä¸ä¸ªå符åå¨1å·å¯åå¨,æ¥ççä¸ä¸ªå符åå¨2å·å¯åå¨.
s/\(.*\)
\(.*\)/\2 \1/g 交æ¢ä¸¤ä¸ªå段
.ä»»ä½å符
^è¡é¦
$è¡å°¾
*å导çæ£å表达å¼éå¤0æè¥å¹²æ¬¡
[å
符表]å符ä¸çä»»ä¸å符
a..表示aåç2个å符
^wood表示è¡é¦çwood
x$表示è¡ä¸ºçx
^INSERT$åªå
å«
å符串INSERTçè¡
^$ä¸å
å«ä»»ä½å符çè¡
x*表示0æè¥å¹²ä¸ªè¿ç»çx
xx*表示1æå¤ä¸ªè¿ç»çx
.*表示0æ´»è¥å¹²
个å符
w.*s表示以wå¼å§,sç»å°¾çä»»ä½å符串
[tT]å°åæ大åçt
[^å符表]表示任ä¸ä¸å¨å符表ä¸çå符 [^0-9]
[^a-zA-Z]
\{min,max\}表示å导çæ£å表达å¼éå¤åªç§min次,è³å¤max次[0-9]\{3,9\}表示3å°
9个æ°å
\(...\)表示å°å°æ¬å·ä¸å¹é
çå符串åå¨å°ä¸ä¸ä¸ªå¯åå¨ä¸(1-9),
^\(.\)表示è¡ä¸ç¬¬1个å符åå°1å·å¯åå¨
^\
(.\)\1表示è¡é¦ææå符,ä¸ä»ä»¬ç¸å
cut -c5 fileæfileæ件ä¸æ²¡è¡ç第5个å符æååºæ¥;
ç¨éå·åå²çæ°
å¼å表,å¦-c1,13,50æ第1,13,50个å符æååºæ¥
cut -c20-50æ第20å°50ä¹é´çå符æååºæ¥
å¦
who | cut
-c1-8
who | cut -c1-8,18- æåè¡ä¸ç第1å°8个å符(ç¨æ·å)å第18å°è¡å°¾çå符(ç»å½æ¶é´)
cut -ddchar
-ffields fileå
¶ä¸,dcharæ¯æ°æ®ä¸åå²åå段çåå²ç¬¦,fields表示è¦ä»æ件fileä¸æååºæ¥çå段.
å
段ç¼å·ä»1å¼å§,èä¸æ ¼å¼è·ä»¥åå°çç¨æ¥æå®å符ä½ç½®çæ°åä¸æ ·(å¦-f1ã2ã8ã-f1-3ã-f4-)ã
cut -d: -f1
/etc/passwd
å¦æå·²ç¥å段ä¹é´ä½¿ç¨å¶è¡¨ç¬¦åéç,å°±å¯ä»¥ç»cutå½ä»¤ç¨-fé项èä¸ç¨-cé项,好å¤äºï¼è¿è®°å¾å§,è¿éç¨ä¸çç¨-dé
项æ¥æå®åå²ç¬¦,å 为
cutæå¶è¡¨ç¬¦é»è®¤ä¸ºåå²ç¬¦ã
pasteåcutæ£å¥½ç¸å,å®ä¸æ¯æè¡å离å¼,èæ¯æå¤è¡å并å¨ä¸èµ·ã
paste
names numbrsæ件namesä¸çæ¯ä¸è¡é½ånumbersä¸ç对åºè¡æ¾ç¤ºå¨ä¸èµ·,ä¸é´ç¨å¶è¡¨ç¬¦åå²ã
å¦æä¸æ³ç¨å¶è¡¨ç¬¦ä½é»è®¤åå²,
å¯ä»¥ä½¿ç¨-dcharsæå®åå²ç¬¦
paste -d'+' names addresses numbers
-sé项åè¯pasteæå
ä¸æ件ä¸çè¡ç²è´´å¨ä¸èµ·,èä¸æ¯ä»å
¶ä»æ件ãå¦æåªæå®ä¸ä¸ªæ件å,å
¶æææ¯ææ件ä¸çææè¡å并æä¸è¡,åæ¥éè¡ä¹é´ç¨å¶è¡¨ç¬¦æè
æ-dé项æå®çåå²
符åå²ã
sedæ¯ç¨æ¥ç¼è¾æ°æ®çç¨åº,æææµç¼è¾å¨(stream editor)ãä¸edä¸å,sedä¸è½ç¨äºäº¤äº,
-né
项,ç¶å使ç¨på½ä»¤æ¾å¼æå®
sed -n '1,2p' fileåªæ¾ç¤ºå2è¡
sed -n '/Unix/p'
fileåªæå°å
å«Unixçè¡
å é¤è¡
då é¤æ´è¡æ件
sed '1,2d' fileå é¤1å2è¡
è®°ä½sedé»è®¤æè¾å
¥
çææè¡åå
¥æ åè¾åº,æ以çäºè¡çæå,ä¹å°±æ¯ä»ç¬¬3è¡å°ç»å°¾,é½è¢«åå
¥æ åè¾åºã
sed '5d'å é¤ç¬¬5è¡
sed
'/[Tt]est/d'å é¤å
å«testæTestçè¡
sed -n '20,25p' teståªæ¾ç¤ºæ件testç第20è¡å°ç¬¬25è¡
sed
'1,10s/unix/UNIX/g' introæ¥introå10è¡ä¸çunixæ¹ä¸ºUNIX
sed
'/jan/s/-1/-5/'å°ææå
å«jançè¡ä¸ç¬¬1个-1æ¹ä¸º-5
sed 's/...//'
dataå é¤dataæ件æ¯ä¸è¡çå3个å符
sed 's/...$//' dataå é¤dataæ件æ¯ä¸è¡çæå3个å符
sed -n 'I'
textæ¾ç¤ºæ件textçææè¡,æææä¸å¯æå°å符æ¾ç¤ºä¸º\nn,å¶è¡¨ç¬¦æ¾ç¤ºä¸º\t
è¿æ»¤å¨trç¨æ¥è½¬æ¢æ¥èªæ åè¾å
¥çå
符,trå½ä»¤çä¸è¬æ ¼å¼ä¸º
tr from-chars to-chars
tr e x <
introæææåæ¯e转æ¢æx
trå½ä»¤çè¾å
¥å¿
é¡»éå®åå°æ件intro,å 为træ»æ¯ä»æ åè¾å
¥è·å¾è¾å
¥;转æ¢çç»æåå
¥æ åè¾åº,èåå§æ
件ä¿æä¸åã
cut -d: -f1,6 /etc/passwd | tr : ' '
éè¿å¨ç®¡é线çæåå ä¸éå½çtrå½ä»¤,å°±å¯ä»¥æåå·è½¬æ¢æå¶è¡¨ç¬¦,è¿æ ·äº§ççè¾åºæ´å®¹æç
åå¼å·ä¸æ¬çæ¯å¶è¡¨ç¬¦(å°½ç®¡ä½ çä¸å°)ãå¿
é¡»å°å®æ¬å¨
å¼å·ä¸,以便穿è¿shell,使trææºä¼çå°å®ã
使ç¨\nnnæ¥ç»træä¾8è¿å¶è¡¨ç¤ºçå符
ä¸äºasciiå符çå
«è¿å¶å¼
å é
7
éæ ¼ 10
å¶è¡¨ç¬¦ 11
æ°è¡ 12
æ¢è¡ 12
æ¢é¡µ 14
å 车
15
è½¬ä¹ 33
date | tr ' ' '\12'æ¤ä¾ä¸,træ¥ådateå½ä»¤çè¾åº,并æææçç©ºæ ¼è½¬æ¢ææ¢è¡
tr
'[a-z]' '[A-Z]'
<introå°ææå°å转æ¢ä¸ºå¤§å
-sé项,trå½ä»¤ä¸ç-sé项ç¨æ¥å缩to-charsä¸éå¤çå符,æ¢å¥è¯è¯´,å¦æ转æ¢å®æå,æ
to-charsä¸çæ个å符è¿ç»åºç°å¤æ¬¡,åè¿äºè¿ç»ç¸åçå符被æ¿æ¢ä¸ºä¸ä¸ªå符ã
å¦ä¸é¢çå½ä»¤å°åå·è½¬æ¢ä¸ºå¶è¡¨ç¬¦,并å°å¤ä¸ªè¿ç»å¶è¡¨ç¬¦æ¿æ¢ä¸º
å个å¶è¡¨ç¬¦ï¼
tr -s ':' '\11\'
tr -s ' ' ' '
<lotspaceséè¿-så°å¤ä¸ªç©ºæ ¼å
¨é¨å缩为åä¸ªç©ºæ ¼
-dé项ç¨æ¥å é¤æè¾å
¥æµä¸çå符,å
¶ä¸è¬æ ¼å¼ä¸º
tr -d
from-charsä»»ä½åå¨from-charsä¸çå符é½ä¼è¢«ä»æ åè¾å
¥ä¸å é¤ãä¸ä¾ç¨træ¥å é¤æ件introä¸çææç©ºæ ¼:
tr -d ' '
<intro
å½ç¶sed 's/ //g' introä¹å¯ä»¥å¾å°åæ ·çææ
tr 'X' 'x' æ大Xä¸æå°x
tr '()'
'{}' æææå·¦å°æ¬å·è½¬æ¢æ左大æ¬å·,å³å°æ¬å·ä¸æå³å¤§æ¬å·
tr '[a-z]' '[A-Z]' æå°å转大å
tr '[A-Z]'
'[N-ZA-M]' æA-Måæ¯åå«ä¸æN-ZæN-Z转æA-M
tr ' ' ''æææå¶è¡¨ç¬¦è½¬æ¢æç©ºæ ¼
tr -s ' '
''æå¤ä¸ªç©ºæ ¼è½¬æ¢æåä¸ªç©ºæ ¼
tr -d '\14' å é¤æææ¢é¡µå符(å
«è¿å¶14)
tr -d '[0-9]'å é¤æææ°å
grep
'[A-Z]' list listä¸å
å«ä¸ä¸ªå¤§ååæ¯çè¡
grep '[0-9]' dataä¸å
å«æ°åçè¡
grep '[A-Z]...[0-9]'
list listä¸å
å«ä»¥å¤§ååæ¯å¼å§ãæ°åç»å°¾ç5个å符ç»åçè¡
grep '\.pic$' filelist
filelistä¸ä»¥.picç»å°¾çè¡
uniq in_file
out_fileè¯¥æ ¼å¼ä¸,uniqæin_fileå¤å¶å°out_file,å¤çè¿ç¨ä¸,å»æå
¶ä¸çéå¤è¡ãå¦æä¸æå®ç¬¬2个åæ°out_file,ç»
æå°±åå
¥æ åè¾åºï¼å¦æin_file没ææå®,é£ä¹uniqå°±æäºä¸ä¸ªè¿æ»¤å¨,ä»æ åè¾å
¥è¯»åè¾å
¥ã
>æ<
éå®å,è¦çåæçå
容
>>æ<< éå®å,æ³æ件æ«å°¾è¿½å å
容
tee æ¾ç¤ºå¨ç»ç«¯ä¸çå
容åå¨å°æ件 ls |
tee >glx
-d ç®å½
-e åå¨
-f æ®éæ件
-r è¿ç¨å¯è¯»æ件
-s é¿åº¦ä¸ä¸º0
-w
è¿ç¨å¯åæ件
-x å¯æ§è¡
-L é¾æ¥æ件
$# ä¼ ç»ç¨åºçåæ°ä¸ªæ°,æè
æ§è¡setå½ä»¤è®¾ç½®çåæ°ä¸ªæ°
$*
对ä½ç½®åæ°ççéä¸å¼ç¨
$@ è·$*ç¸ä¼¼,åºå«å¨äºå½å å
¥åå¼å·å("$@"),éä¸å¼ç¨ä½ç½®åæ°"$1","$2"...ç
$0
æ£æ§è¡çç¨åºå
$$ æ£æ§è¡ç¨åºçè¿ç¨id
$! æåä¸ä¸ªåçåå°è¿è¡çç¨åºçè¿ç¨id
$? æåä¸ä¸ªå¨åå°æ§è¡çç¨åºçéåºç¶æ
$-
å½åææé项æ å¿
`command`符å·ä¹é´çå
容为éè¦æ§è¡çå½ä»¤
make -C /lib/modules/`uname -r`/build
M=`pwd`
使ç¨echoå¯ä»¥æ¾ç¤ºå符串,ä½æ¯ä¸è½æ ¼å¼åå符串,å¯ä»¥ä½¿ç¨printfå®ç°
printf "format" arg1 arg2
...
ln -s from to æfromé¾æ¥å°toä¸,æ以toæ¯fromç符å·é¾æ¥
tree -dåªæ¾ç¤ºç®å½
tree -L
2æ¾ç¤º2级ç®å½
å符串æ¯è¾
s1 = s2 s1çäºs2
s1 != s2 s1ä¸çäºs2
s1
s1ä¸ä¸ºç©º
-n s1 s1ä¸ä¸ºç©º
-z s1 s1为空
æ´æ°æ¯è¾æä½
-eq çäº
-ge
大äºæçäº
-gt 大äº
-le å°äºæçäº
-lt å°äº
-ne ä¸çäº
[ "$x1" = 5 ]å符串æ¯è¾
[
"$x1" -eq 5 ]æ´æ°æ¯è¾
-a é»è¾ä¸æä½
-o é»è¾ææä½
command1 &&
command2
åå
æ§è¡command1,å¦æè¿åçéåºç¶æ
为0,åæ§è¡command2;å¦æcommand1è¿åçéåºç¶æé0,åè·³è¿command2
command1 ||
command2
åä¸è¾¹ç&&å·®ä¸å¤,åªæ¯,ä»
ä»
å½command1è¿åé0æ¶,ææ§è¡command2
#!/bin/sh
append2=0
include_lib=1
if
[ -f cscope_i ];then
rm cscope_i
fi
for cscope_file in $*; do
if [ -f "$cscope_file" ] || [ -d "$cscope_file" ];then
# if [
$cscope_file = '-a' ];then
# append2=1
# continue
#
fi
#
# if [ $cscope_file = '-n' ];then
#
include_lib=0<F11>
# continue
# fi
if [ "$append2" = "1"
];then
find $cscope_file -maxdepth 1 -name '*.[cChH]' -o -name
'*.[cC][pP][pP]'>>cscope_i
else
find $cscope_file -name
'*.[cChH]' -o -name '*.[cC][pP][pP]'>>cscope_i
fi
else
if [
$cscope_file = '-a' ];then
append2=1
elif [ $cscope_file = '-n'
];then
include_lib=0
else
echo "Error: cannot read file
$cscope_file"
fi
fi
done
if [ -f cscope_i ];then
if [
"$include_lib" = "1" ];then
cscope -bi cscope_i
else
cscope -bki cscope_i
fi
rm cscope_i
fi
#linux(ubuntu)
温馨提示:内容为网友见解,仅供参考