홈 › 리눅스 명령어 › 02 / 10

텍스트 보기·편집 (less·vi)

섹션 7진행 0 / 10

3. 코드 예제

예제 1: 보이지 않는 글자 — 01_text_view.sh 발췌

bash
cat -n fruits.txt | head -n 3
cat -A tabs.txt
nl -ba fruits.txt | tail -n 2
text
     1	banana 3
     2	apple 10
     3	cherry 7
a^Ib$
     4	apple 2
     5	Banana 1

a^Ib$ 에서 ^I 가 탭, $ 가 줄 끝입니다. 설정 파일의 키 뒤에 공백이 붙어 값이 안 읽힐 때 이 출력이 원인을 보여 줍니다.

예제 2: 정렬과 빈도 — 01_text_view.sh 발췌

bash
sort -k2 -n fruits.txt
sort -k2 -nr fruits.txt | head -n 1
cut -d' ' -f1 fruits.txt | sort | uniq -c
cut -d' ' -f1 fruits.txt | sort | uniq -d
text
Banana 1
apple 2
banana 3
cherry 7
apple 10
apple 10
      2 apple
      1 banana
      1 Banana
      1 cherry
apple

-k2 -n 으로 숫자 열 기준 정렬이 됐고, uniq -c 는 banana 와 Banana 를 다른 것으로 셉니다. 대소문자를 합치려면 sort -f | uniq -ci 입니다.

예제 3: 비교 — 01_text_view.sh 발췌

bash
sort fruits.txt > a.txt; sed 's/cherry 7/cherry 9/' a.txt > b.txt
diff a.txt b.txt
diff -u a.txt b.txt | tail -n 4
diff -q a.txt a.txt && echo "같음"
text
5c5
< cherry 7
---
> cherry 9
 Banana 1
 banana 3
-cherry 7
+cherry 9
같음

같은 차이를 두 형식으로 봤습니다. -u 는 앞뒤 문맥 줄을 함께 보여 줘 어디인지 바로 압니다.

예제 4: 변환과 줄 끝 — 01_text_view.sh 발췌

bash
echo 'hello world' | tr 'a-z' 'A-Z'
echo 'a,b,c' | tr ',' '\n'
printf 'win\r\n' > win.txt; file win.txt
sed -i 's/\r$//' win.txt; file win.txt
text
HELLO WORLD
a
b
c
win.txt: ASCII text, with CRLF line terminators
win.txt: ASCII text

file 이 CRLF 를 알려 주고 sed 한 줄로 고쳐집니다. 운영 묶음 08 에서 이 문제로 스크립트가 첫 줄부터 실패하는 사례를 다뤘습니다.