Linux는 텍스트 처리를 할 수 있습니다!■cut 명령 ■tr 명령 ■diff 명령

3847 단어 Linuxidea

개시하다


태엽을 잘 감기 위해서 저는 리눅스 씨와 사이가 좋지만 리눅스 씨는 텍스트 처리가 많아서 텍스트 처리 지령의 일부분을 배우고 싶습니다.

개요


■ cut 명령
■ tr 명령
■ diff 명령
총결산을 했습니다.

cut 명령(입력의 일부분 잘라내기)


cut 명령은 파일을 읽습니다. 각 줄에서 지정한 부분만 잘라냅니다.
"00자에서 0자까지"
탭으로 구분된 파일
제0장 및 제0장
이렇게 선택하고 꺼낼 수 있습니다.
↓ cut 명령 형식
$ cut (オプション) ファイル名
읽기 파일을 지정하지 않은 상태에서 표준 입력에서 받은 내용을 처리합니다.

■ 입력의 일부분 출력 잘라내기


$ cut -d 区切り文字 -f 何列目か(フィールド番号) ファイル名 
왜 이렇게 귀찮아요?
예를 들어/etc/passwd 파일을 보면 의미를 구분할 수 있습니다.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
略
각 분할(필드)은 각자의 의미가 있고 왼쪽부터 사용자 이름, 경로, ID, 그룹 ID, 주석, 홈 디렉터리, 로그인 케이스 등의 뜻이 있다.
여기서 로그인 케이스만 표시할 때: 칸막이가 된 7열의 필드이기 때문에
$ cut -d : -f 7 /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
略
다른 열을 제거하고 로그인 케이스에 해당하는 부분만 표시합니다!
↓, 나누면 여러 필드를 지정할 수 있어요!
$ cut -d : -f 3,7 /etc/passwd
0:/bin/bash
1:/sbin/nologin
2:/sbin/nologin
3:/sbin/nologin
4:/sbin/nologin
略
이런 느낌에서cut 명령은 원시 데이터에서 특정한 부분만 꺼낼 수 있다.
빈 칸을 구분할 때 -d로 바꾸고 싶어요?

tr 명령(텍스트 파일의 문자 대체/삭제)


tr 명령은 tr 텍스트 파일의 문자를 바꾸거나 삭제하는 명령입니다.
↓ tr 명령 형식
$ tr (オプション) 置き換え前の文字列 置き換え後の文字列
옵션
의향
-d
지정한 문자열에서 문자 삭제
-s
지정한 문자열의 문자가 연속이면 하나의 문자로 병합됩니다
-c
문자열에 포함되지 않은 모든 문자를 대상으로 지정하기
-t
문자열 1을 문자열 2의 길이로 절단합니다.
$ cat unko.txt
1 anko
2 anko
3 anko
$ cat unko.txt | tr a u
1 unko
2 unko
3 unko
a가 u로 잘 바뀌었네요!
참고로 문자열에 -를 넣으면
$ cat unko.txt | tr a u | tr a-z A-Z
1 UNKO
2 UNKO
3 UNKO
잘하고 있어!
※ ※ 주의! ※
tr 명령은 파일을 읽을 수 없는 순수한 필터로 설계되었습니다.
$ tr a u unko.txt
tr: extra operand ‘unko.txt’
Try 'tr --help' for more information.
↑ 파일을 읽을 수 없습니다!
따라서 파일 내용에tr 명령을 실행하려면
$ cat unko.txt | tr a u
또는
$ tr a u < unko.txt
unko에 있습니다.txt에 필터를 실행할 수 있습니다.

diff 명령(차분 비교)


diff 명령은 두 텍스트 파일을 비교하여 다른 부분을 출력합니다.
↓ diff 명령 형식
$ diff (オプション) 比較もとファイル 比較先ファイル
옵션
의향
-c
파일마다 출력이 다른 곳!기호로 수정을 표시하다
-u
차이가 있는 부분을 하나로 합쳐서 - 기호와 + 기호로 변경된 부분을 표시하는unified 형식
-q
출력 파일만 다른지 여부
-i
대소문자 무시
-B
빈 행 무시
-w
비교할 공백 무시
이 명령은 프로필이나 프로그램 소스 코드를 편집하기 전, 편집한 후의 수정 내용을 포함한다
확인에 자주 쓰이는 것 같아요.
예를 들어 과일 목록의 파일을 복사하고 다른 것을 편집하며 차이를 비교한다.
$ cat list.txt
apple
banana
lemon
melon
strawberry
$ cp list.txt list_2.txt
$ vim list_2.txt(vimでlist_2.txtを編集する)
$ cat list2.txt
apple
banana
melon
strawberry
pineapple(lemonを削除してpineappleを追記した!)
$ diff list.txt list_2.txt(差分をdiffコマンドで確認)
3d2
< lemon
5a5
> pineapple
3d2
< lemon
5a5
> pineapple
↑는 무엇입니까?
명령을 변경하는 출력의 표현은 이해하기 어렵지만 다음과 같이 a, b, c로 표현한다.
a...add(추가)
c...변경
d...삭제
그리고
<...행이 삭제됨
>...추가된 행
라는 뜻이다.
기호
의향
범위 1a 범위 2
원본 파일 영역 1에 대상 파일 영역 2의 내용 추가
범위 1b 범위 2
대상 파일 영역 2의 내용이 원본 파일 영역 1로 수정됨
범위
소스 파일 영역 1이 삭제됨(범위 2와 무관)
이해하기 힘들지만.
a...add(추가)
c...변경
d...삭제한다고 합니다.
이에 따라 3행의 레몬이 삭제되고 범위 5에pineapple이 추가됐다.
patch 명령을 사용하여 diff 명령으로 출력되는 차이를 수정할 수 있습니다.
※ 패치 명령 재사용(><)

총결산


다양한 텍스트 처리가 있습니다!내 생각엔!

좋은 웹페이지 즐겨찾기