반응형
■ 특정 행 삭제/출력
sed -n '1p' a.txt <== a.txt파일의 첫 행 출력
sed -n '1,3p' a.txt <== a.txt파일의 1번행부터 3번행까지 출력
sed -n '8,$p' a.txt <== a.txt파일의 8번행부터 끝행까지 출력
sed -n -e '1p' -e '8,$p' a.txt <== a.txt파일의 1번행출력 및 8번행부터 끝행까지 출력
sed -n '/^abc/p' a.txt <== abc로 시작하는 행들을 출력
sed -n '/abc/p' a.txt <== abc를 포함하는 행들을 출력
sed '[Hh]ost/d' a.txt <== Host 또는 host를 포함하는 라인 삭제
sed '3d' a.txt <== 3번째 라인만 삭제하고 출력
sed '1,3d' a.txt <== 1~3번째 라인 삭제하고 출력
sed '3,$d' a.txt <== 3번째부터 마지막 라인까지 삭제하고 출력
sed '/root/d' a.txt <== root가 포함된 라인만 삭제하고 출력
sed '3,10s/ABC//" a.txt <== 3~10번째 행 중에서 ABC 삭제(원본파일 변경X)
■ 공백제거
sed '/^$/d' a.txt <== 빈 라인들을 지운 후 출력
sed '/^ *$/d' a.txt <== 빈 라인들이나 공백으로 채워진 행들을 삭제한 후 출력
■ 치환
sed 's/ABC/abc/g' a.txt <== ABC라고 되어있는 부분을 abc로 치환
sed 's/[0-9][0-9]$/&.1/' a.txt <== 라인의 마지막 두개의 숫자 뒤에 .1을 붙임
sed 's/^....//' a.txt <== 각 행의 첫 4글자 삭제
sed 's/....$//' a.txt <== 각 행의 마지막 4글자 삭제
sed 's#/test/test.sh#/test/test.c#g' a.txt <== /test/test.sh를 /test/test.c로 치환
sed 's;/test/test.sh;/test/test.c;g' a.txt <== /test/test.sh를 /test/test.c로 치환
sed '/start/,/end/s/ABC/abc/g" a.txt <== start라는 단어를 포함하고있는 첫번째 라인부터 end를 포함하고있는 첫번째 라인까지 검색하면서 ABC라는 문자열을 모두 abc로 변경(end 이후 다시 start가 나오면 작업 반복)
■ 메타문자
/ABC/ ABC를 포함하고 있는 어떠한 라인과도 부합
/^ABC/ ABC로 시작하는 어떠한 라인과도 부합
/^$/ 공백라인, 즉 라인의 시작과 끝 사이에 아무것도 없는 라인과 부합(스페이스가 들어간 라인과는 부합하지 않는다. 스페이스 자체가 문자로 인식)
/./ 적어도 한 문자를 포함하고 있는 라인들과 부합
/a[bc]d/ abd또는 acd와 부합하지만 aed, afd 등과는 부합하지 않음
/a[^bc]d/ aed, afd 등과는 부합하지만 abd, acd 등과는 부합하지 않음
s/abc/p&p/ abc를 pabcp로 대체
반응형