쉘 - 정규식 사용, grep, sed, awk

목차

1. 정규식

두 번째, grep을 사용하는 방법

3. Sed 스트림 편집기(일반적으로 사용 및 대체 텍스트)

1, sed -i 's/#rm -f \/a\/b/rm -f \/a\/b/g' 안녕하세요/파일

2, sed -i 's/^bind-address.*/bind-address = 0.0.0.0/' $MYSQL_CONF_FILE

3, Sed -r 's/root/ROOT/gi/' /etc/passwd  

4. 이스케이프 문자

넷째, awk 사용(출력 열용)

1. 정규식

.

ls . txt

현재 디렉터리에서 .txt로 끝나는 파일 일치

*

grep 'a * ' 파일.txt

파일에서 문자 a가 연속적으로 나타나는 모든 항목과 일치합니다.

+

grep 'b a+ ' 파일.txt

b 뒤에 하나 이상의 a가 오는 구성 파일의 모든 문자열입니다.

?

grep '콜루 ? r'파일.txt

파일에 색상이나 색상이 포함된 문자열과 일치합니다.

[ ]

grep ' [ 신용 ] ' file.txt

파일에 모음이 포함된 문자열을 일치시킵니다.

[^]

'grep' [^ 0-9 ] ' 파일.txt

숫자를 포함하지 않는 파일의 행과 일치합니다.

-

grep '[a - z]' 파일.txt

파일에서 소문자가 포함된 문자열을 일치시킵니다.

\비

grep ' \b 단어 \b ' file.txt

파일의 개별 단어 단어 일치

^

grep ' ^ start' 파일.txt

파일에서 start로 시작하는 줄과 일치합니다.

$

grep 'end $ ' 파일.txt

end로 끝나는 파일의 행과 일치합니다.

두 번째,  grep을 사용하는 방법

고양이 test.txt |grep ^u

test.txt에서 u로 시작하는 줄의 내용을 찾아보세요.

고양이 test.txt |grep ^[^u]

test.txt에서 u로 시작 하지 않는 줄의 내용을 찾아보세요.

고양이 /etc/passwd | grep -n 루트

/etc/passwd를 가져와 루트가 나타나는 줄을 제거하고 (-n) 줄 번호를 표시합니다.

추신 : | 화장실

프로세스 수를 표시

grep "wl" 1.txt 2.txt 3.txt

1.txt, 2.txt, 3.txt에서 wl을 찾으세요.

grep -r  "wl" 경로/inc

path/inc에서 wl을 재귀적으로 검색합니다.

grep "wl" 경로/*.txt

경로 디렉토리의 모든 txt, wl을 검색하십시오.

3. sed 스트림 편집기(일반적으로 텍스트를 대체하는 데 사용됨)

1, sed -i 's/#rm -f \/a\/b/rm -f \/a\/b/g' 안녕하세요/파일

-i: 원본 파일에서 직접 편집

s는 교체 작업의 시작을 나타냅니다.

g는 전역 교체를 의미합니다(g가 없고 여러 줄이 나타나고 한 줄에 여러 번 발생하는 경우 각 줄의 첫 번째 줄만 교체됩니다).

#rm -f \/a\/b/바꿀 패턴은 #rm -f /a/b의 텍스트입니다.

rm -f \/a\/b/는 대체된 패턴으로, rm -f /a/b의 텍스트입니다.

hello/file의 #rm -f /a/b를 rm -f /a/b로 대체함을 나타냅니다.

2, sed -i 's/^bind-address.*/bind-address = 0.0.0.0/' $MYSQL_CONF_FILE

 ^bind-address.*: "bind-address"로 시작하는 행을 일치시킵니다.

바인딩 주소 = 0.0.0.0: 일치하는 동작 "바인드 주소 = 0.0.0.0"을 대체합니다.

3, Sed -r 's/root/ROOT/gi/' /etc/passwd  

etc/passwd 디렉토리의 모든 파일(-r)에 대해 모든(g) 루트(들)를 텍스트(i)의 ROOT로 바꿉니다.

4. 이스케이프 문자

-r '\crootcd' 비밀번호를 참조하세요.

Sed -r '\#root#d' passwd (\는 이스케이프 문자로, sed에게 #을 일반 문자로 처리하도록 지시)

passwd에서 루트를 삭제하면 두 개의 #은 임의의 문자로 대체될 수 있습니다.

넷째, awk 사용(출력 열용)

awk '{print $2}' file.txt

file.txt의 두 번째 열을 인쇄합니다.

awk -F':' '{인쇄 $1, $NF}' /etc/passwd

:를 구분 기호로 사용하면 첫 번째 열과 마지막 열을 인쇄합니다.

awk -va=1 '{print $1,$1+a}' log.txt

-va=1, 변수 a를 지정하고 값 1을 할당한 다음 첫 번째 열과 두 번째 열의 내용을 출력합니다.

추천

출처blog.csdn.net/weixin_45981798/article/details/131843050