본 문서는 실무를 하면서 자주 쓰는 리눅스 쉘 명령어 소개하기 위한 목적이 있습니다.
cat 명령어
cat 명령어는 concatenate
의 줄임말입니다. 리눅스에서 빈번하게 사용하는 파일 보기
명령어입니다.
기본 문법으로 파일 내용 출력가 있습니다.
$ cat <file-name>
파일 내용을 출력해 특정 파일명으로 저장 할 수 있습니다.
$ cat <file-name> > <output-file-name>
여러 파일 출력이 가능합니다.
cat sample1.txt sample2.txt > sample3.txt
파일 내용 출력시 -n 옵션을 추가하면 줄번호 표시가 가능합니다.
cat -n <file-name>
grep 명령어와 조합해서 무자열 필터에 사용할 수 있습니다.
$ cat <file-name> | grep -E "<tag>[a-zA-Z ]+</tag>" > <output-file-name>
grep에서 -E 옵션은 확장 정규식 옵션으로 정규식을 이용해 문자열을 찾습니다.
Sed
***sed(stream editor)***은 편집기 입니다. ed 명령어와 grep 명령어를 일부 합친 명령어입니다.$/
명령어 옵션
- a : 현재 행에 하나 이상의 새로운 행을 추가
- c : 현재 행의 내용을 새로운 내용으로 바꿈
- d : 행을 삭제
- i : 현재 행의 위에 삽입
- l : 출력되지 않는 특수문자를 출력
- n : 다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리
- p : 행을 출력
- q : sed를 종료
- r : 파일로부터 행을 읽어옴
- ! : 선택된 줄을 제외한 나머지 전체 줄에 명령어 적용
- s : 문자열을 치환한다.
옵션
- -e : 다중 편집시 사용
- -f : sed 스크립트 파일 지정에 사용
- -n : 출력을 생략
명령어 예시는 다음과 같습니다.
sed '/hello/d' 1.html : hello 문자가 포함된 줄을 삭제하여 출력
sed '/hello/!d' 1.html : hello 문자가 있는 줄만 제외 하고 삭제
sed '1,2d' 1.html : 처음 1줄, 2줄을 지움
sed '/^$/d 1.html : 빈줄을 삭제:
sed 명령어는 치환해 유용합니다. /s은 치환을 의미합니다. /g
을 추가하면 전역 치환을 수행한다는 의미입니다.
sed 's/foo/bar/g' hello.txt
옵션으로 -i를 추가하면 변경 내용을 실재 반영해 저장 한다는 의미입니다. 아래 명령어를 입력하면 의 내용중 “foo"라는 문자열을 “bar"로 치환합니다.
sed -i 's/foo/bar/g' <file-name>
숨김줄 제거 명령어입니다.
sed -i 's/\r//' <file-name>
만약 텍스트 파일에서 중복 줄을 제거하려면 sort 명령어를 이용합니다.
sort -u <file-name>