sed 명령어 강의에서 사용된 예제 중 질문이 있습니다.
435
投稿した質問数 8
명령어 sed를 다루는 강의를 보다가 의문점이 있어서 질문드립니다.
SP=$' ';TAB=%'\t';sed -E 's/'"(${SP}|${TAB})"'{2,5}.+$//' president.txt
질문 1.
위의 명령 줄에서 s/다음에 (${SP}|${TAB}) 양 쪽에 작은 따옴표와 큰 따옴표를 같이 붙여주셨는데 이유를 좀 자세히 설명 부탁드려도 될까요?
변수 SP와 TAB을 사용하기 위해서 큰 따옴표 ""를 붙여야할 것 같긴한데 작은 따옴표도 왜 같이 붙여야 되는지 잘 모르겠습니다.
질문 2.
그리고 SP와 TAB 변수를 선언할 때 앞에 $를 붙여주셨는데 이 것은 공백문자와 개행문자를 특수 문자 형태로 변수에 저장하기 위함인가요? 
수업에서 큰따옴표만 써도 백슬래쉬 같은 건 특수 문자 의미가 억제되지 않는걸로 설명을 들었는데 여기선 왜 되지 않는지 궁금합니다.
양질의 강의 제공해주셔서 감사합니다.
回答 2
1
ultraraptor 님 안녕하세요?
질문주셨네요. 쉘 프로그래밍에서 가장 난해한 부분이 인용부호 사용입니다.
자! 찬찬히 설명드려볼게요
(질문1)
인용부호는 작은따옴표로 시작했다면 끝나는 부분도 작은따옴표입니다. 이건 이해하시는데 무리 없으시죠?
자 예시를 보시죠.
SP=$' ';TAB=%'\t';sed -E 's/'"(${SP}|${TAB})"'{2,5}.+$//' president.txt
(A) (B) (C)
(A) 's/'
(B) "(${SP}|${TAB})" . . . . . . 확장이 일어나도록 하는것이 목적(큰 따옴표를 이용)
(C) '{2,5}.+$//'
sed 명령어 앞에 echo 명령어를 추가해보세요. 그럼 궁금하신 부분이 해결될거에요.
bash-3.2$ SP=$' ';TAB=$'\t';echo sed -E 's/"(${SP}|${TAB})"{2,5}.+$//' president.txt
sed -E s/"(${SP}|${TAB})"{2,5}.+$// president.txt
bash-3.2$ SP=$' ';TAB=$'\t';echo sed -E 's/'"(${SP}|${TAB})"'{2,5}.+$//' president.txt
sed -E s/( | ){2,5}.+$// president.txt . . . . . . 확장이 일어나도록 하는것이 목적(큰 따옴표를 이용)
bash-3.2$
(질문2)
배쉬 매뉴얼에 보면 다음과 같은 설명이 있습니다
" Words of the form $'string' are treated specially. The word expands to
string, with backslash-escaped characters replaced as specified by the
ANSI C standard .... 중략 "
bash-3.2$ STR=$'Hello\nWorld'
bash-3.2$ echo "$STR" | hexdump -C
00000000 48 65 6c 6c 6f 0a 57 6f 72 6c 64 0a |Hello.World.|
0000000c
bash-3.2$ STR='Hello\nWorld'
bash-3.2$ echo "$STR" | hexdump -C
00000000 48 65 6c 6c 6f 5c 6e 57 6f 72 6c 64 0a |Hello\nWorld.|
0000000d
bash-3.2$
$' ' 은 인용부호 내부의 이스케이프된 문자가 그 효력을 유지하게끔 하기 위해서 사용한다는 것을 알 수 있습니다.
- 끝 -
59회차 학습 미작동
0
65
2
BASH_REMATCH 변수가 어디서 나온거죠?
1
913
1
${object%%:*}, ${object#*:}는 어떤 뜻인가요
2
396
1
./euid.sh
2
397
1
touch 'Gone with the wind.mp3' 입력 결과가 다릅니다
1
363
1
스크립트에서 %는 무엇을 의미하나요?
1
519
1
하드 링크, 심볼릭 링크
1
690
2
[..]와 테스트 강의에서
1
388
1
하드 링크, 심볼릭 링크
0
631
1
변수명이 출력되지 않습니다.
1
284
1
변수명 출력이 되지 않습니다.
0
345
1
select in case문 질문
0
230
1
crontab 질문이 있습니다.
1
224
2
(..)_(..) 와 BASH_REMATCH
1
747
1
^[.+] 정규표현식이 RegExr 를 나타내는게 맞나요?
1
387
2
실습자료를 다운받은 다음에 어떻게 해야 하나요?
0
435
3
sudo cp helloworld.sh /usr/bin 명령어 질문
1
603
1
read -p 명령어가 동작하지 않습니다.
2
350
1
wc 명령어에 -L 옵션이 동작하지 않습니다.
1
436
1
book이 변수가 아니라 파일인가요?
1
355
1
sed 관련 질문
1
639
2
파일접근권한 강의
1
143
1
[] 결과
2
210
1
# (주석) 관련 질문 드립니다.
1
163
1

