linux 에서 텍스트 처리 삼 총사
:
.
:
*
:a*b b,ab aab aaab acb
.*
\? 1 0
\{m,n\}: m , n
:
^: ,
$: ,
^$:
\ \b: ,
:
\(\)
\(ab\)*
ip
ifconfig | egrep --color '(\\.){3}\'
grep 텍스트 필터
grep 문법
grep 'pattern' input_file ...
grep: , 。
grep 【option】 pattern 【file】
option:
-i
--color
-v
-E
grep -A 2 ‘cord id’ /proc/cpuinfo
-C
grep -E = egrep
sed 흐름 편집기
sed 문법
sed :
, , , ,
:
sed [option] 'AddressCommand' file ...
option:
-n ,
-i
-e SCRIPF -e SCRIPT
Address:
1.StartLine,Endline
:1,100
$:
2./RegExp/
/^root/
3./pattern1/,/pattern2/
pattern1 , pattern2 .
4.LineNumber
5.StartLine,+N
startLine , N
Command:
d: ;
p:
a\string : , string
i\string
r FILE
w FILE
s/pattern/string/ : ,
g:
i:
s///: s###, s@@@
\(\), \1, \2
:
l..e: like-->liker
love-->lover
like-->Like
love-->Love
&:
awk: 보고서 생 성기, 포맷 후 표시
AWK a.k.a. Aho, Kernighan and Weinberger
:
1、new awk: nawk
2、gawk, awk
:
# awk [options] 'script' file1 file2, ...
# awk [options] 'PATTERN { action }' file1 file2, ...
awk :
、print
print :
print item1, item2, ...
:
1、 , ;
2、 item 、 ( $1)、 awk ; , ;
3、print item , print $0, , , print "";
:
# awk 'BEGIN { print "line one
line two
line three" }'
awk -F: '{ print $1, $3 }' /etc/passwd
、awk
2.1 awk :
FS: field separator, , ;
RS: Record separator, ;
OFS: Output Filed Separator: ,
ORS:Output Row Separator: ,
awk -F:
OFS="#"
FS=":"
2.2 awk :
NR: The number of input records,awk ; , ;
NF:Number of Field, ;
FNR: NR ,FNR ;
ARGV: , , awk '{print $0}' a.txt b.txt ,ARGV[0] awk,ARGV[1] a.txt;
ARGC: awk ;
FILENAME: awk ;
ENVIRON: shell ;
:awk 'BEGIN{print ENVIRON["PATH"]}'
2.3
gawk , , 、 , 。gawk 。
2.3.1
gawk , :
awk 'BEGIN{var="variable testing";print var}'
2.3.2
gawk “ ” , 。 , :
awk -v var="variable testing" 'BEGIN{print var}'
、printf
printf :
printf format, item1, item2, ...
:
1、 print ,printf format;
2、format item ;
3、printf ;
format % , ; :
%c: ASCII ;
%d, %i: ;
%e, %E: ;
%f: ;
%g, %G: ;
%s: ;
%u: ;
%%: % ;
:
N: ;
-: ;
+: ;
:
# awk -F: '{printf "%-15s %i
",$1,$3}' /etc/passwd
、
print items > output-file
print items >> output-file
print items | command
:
/dev/stdin:
/dev/sdtout:
/dev/stderr:
/dev/fd/N: , /dev/stdin /dev/fd/0;
:
# awk -F: '{printf "%-15s %i
",$1,$3 > "/dev/stderr" }' /etc/passwd
、awk :
6.1 :
-x:
+x: ;
x^y:
x**y:
x*y:
x/y:
x+y:
x-y:
x%y:
6.2 :
, , ;
6.3 :
=
+=
-=
*=
/=
%=
^=
**=
++
--
, = , /=/ , /[=]/ ;
6.4
awk , 0 , ;
6.5 :
x < y True if x is less than y.
x <= y True if x is less than or equal to y.
x > y True if x is greater than y.
x >= y True if x is greater than or equal to y.
x == y True if x is equal to y.
x != y True if x is not equal to y.
x ~ y True if the string x matches the regexp denoted by y.
x !~ y True if the string x does not match the regexp denoted by y.
subscript in array True if the array array has an element with the subscript subscript.
6.7 :
&&
||
6.8 :
selector?if-true-exp:if-false-exp
if selector; then
if-true-exp
else
if-false-exp
fi
a=3
b=4
a>b?a is max:b ia max
6.9 :
function_name (para1,para2)
awk :
awk 'program' input-file1 input-file2 ...
program :
pattern { action }
pattern { action }
...
7.1 :
1、Regexp: , /regular expression/
2、expresssion: , 0 , :$1 ~ /foo/ $1 == "magedu", ~( ) !~( )。
3、Ranges: , pat1,pat2
4、BEGIN/END: , awk
5、Empty( ): ;
7.2 Action
1、Expressions:
2、Control statements
3、Compound statements
4、Input statements
5、Output statements
/ /: 。
: , , $2>%1 。
:
, : 。 BEGIN END 。
BEGIN: , 。
END: 。
:
8.1 if-else
:if (condition) {then-body} else {[ else-body ]}
:
awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd
awk -F: '{if ($1=="root") printf "%-15s: %s
", $1,"Admin"; else printf "%-15s: %s
", $1, "Common User"}' /etc/passwd
awk -F: -v sum=0 '{if ($3>=500) sum++}END{print sum}' /etc/passwd
8.2 while
: while (condition){statement1; statment2; ...}
awk -F: '{i=1;while (i<=3) {print $i;i++}}' /etc/passwd
awk -F: '{i=1;while (i<=NF) { if (length($i)>=4) {print $i}; i++ }}' /etc/passwd
8.3 do-while
: do {statement1, statement2, ...} while (condition)
awk -F: '{i=1;do {print $i;i++}while(i<=3)}' /etc/passwd
8.4 for
: for ( variable assignment; condition; iteration process) { statement1, statement2, ...}
awk -F: '{for(i=1;i<=3;i++) print $i}' /etc/passwd
awk -F: '{for(i=1;i<=NF;i++) { if (length($i)>=4) {print $i}}}' /etc/passwd
for :
: for (i in array) {statement1, statement2, ...}
awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i
",A,BASH[A]}}' /etc/passwd
8.5 case
:switch (expression) { case VALUE or /REGEXP/: statement1, statement2,... default: statement1, ...}
8.6 break continue
case
8.7 next
, ; , ID :
# awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd
awk
9.1
array[index-expression]
index-expression ; , , ,awk ; , , index in array 。
, :
for (var in array) { statement1, ... }
,var , ;
:
netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
/^tcp/ , S[$NF] 1,NF , S ;
awk '{counts[$1]++}; END {for(url in counts) print counts[url], url}' /var/log/httpd/access_log
, IP
9.2
delete 。 :
delete array[index]
、awk
split(string, array [, fieldsep [, seps ] ])
: string fieldsep , array ; 0 ;
netstat -ant | awk '/:80\>/{split($5,clients,":");IP[clients[1]]++}END{for(i in IP){print IP[i],i}}' | sort -rn | head -50
length([string])
: string ;
substr(string, start [, length])
: string , start , length ;start 1 ;
system(command)
: command awk
다른 텍스트 보기 도구
(cat;more;less;head;tail)
* cat: ( ) tac:( )
[ ] [ ]..|
-n
shift+pgup/pgdn( )
* more: ( : b: : )
+n n
-n n
+/String String ,
-c
-p
* less:( )
-m more
-N
/ : “ ”
? : “ ”
n ( / ? )
N ( / ? )
b
d
* head: n ( n 10 )
-v
-c number number , number , number
-number/n (+)number number ,
-n number number , number * tail: n
tail [ ] [ ] [ ] |
tail -f : , , ( , )
-v
-q
-num/-n (-)num num
-n +num num
-c c
-f
(cut;sort;uniq)
* cut:
-b : 。 , -n 。
-c : 。
-d : , 。
-f : -d , 。
* sort: ( , )( ascll )
-n
-r
-t:
-k:
-u:
-f:
-o 。
* uniq:
-d:
-D:
-c:
(wc)
* wc:
-l
-w
-m
-L
tr
* tr:
:tr ‘abc’ ‘ABC’
vim 편집기
,
nano,sed,vi
vi:visual interface
vim (vi improve): vi ,
,
vim
1. ( )
2.
3.
:
--> :
i: , ;
a: , ;
o: , , ;
I: ,
A: ,
O: , , ;
--> :
ESC
--> :
:
, set nu
10,20d
--> :
ESC, ESC
、
# vim /path/to/somefile
vim +# : , #
vim +: ,
vim +/PATTERN : , PATTERN
、
1、
:q
:wq
:q!
:w
:w!
:wq --> :x
2、
ZZ:
、 ( )
1、 :
h:
l:
j:
k:
#h: # ;
2、
w:
e:
b:
#w:
3、 :
0:
^:
$:
4、
#G: # ;
G:
,
、
Ctrl+f:
Ctrl+b:
Ctrl+d:
Ctrl+u:
、
x:
#x: #
、 : d
d ;
#dw, #de, #db #
dd:
#dd: # ;
:
StartADD,EndADDd :3,8d 3 8
.:
$:
+#: #
.,$-3d
、 p
p: , , , ;
P: , , , ;
、 y
d
、 : ,
c: d
、 :r
R:
、 u
u:
u n
#u: #
:Ctrl+r
、
.
、
v:
V:
、
/PATTERN
?PATTERN
n
N
、
s
ADDR1,ADDR2s@PATTERN@string@gi
1,$
%:
、 vim
vim FILE1 FILE2 FILE3
:next
:prev
:last
:first
:qa
、
Ctrl+w, s:
Ctrl+w, v:
:
Ctrl+w, ARROW
:qa
、
vim -o :
vim -O :
、
w
:w
:ADDR1,ADDR2w /path/to/somewhere
、
:r /path/to/somefile
、 shell
:! COMMAND
、
1、
:set number
:set nu
:set nonu
2、
:set ignorecase
:set ic
:set noic
3、
:set autoindent
:set ai
:set noai
4、
:set hlsearch
:set nohlsearch
5、
:syntax on
:syntax off
、
/etc/vimrc
~/.vimrc
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux 에서 텍스트 처리 삼 총사정규 표현 식 (정규 표현 식,): grep 텍스트 필터 grep 문법 sed 흐름 편집기 sed 문법 awk: 보고서 생 성기, 포맷 후 표시 다른 텍스트 보기 도구 vim 편집기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.