Tag: perl

Shell: 문자열 바꾸기(Parameter Substitution)

인터넷에 차고 넘치는 문서 중, 익숙한 사이트에 있는 내용을 기반으로 글을 작성했다. 리눅스 CLI 에서 문자열을 바꾸려면? 먼저 sed 가 떠오른다. awk 도 있으나 전혀 쓰지 못하므로 넘기고, perl도 생각해볼 수 있다. 하지만, Shell(Bash, zsh) 자체에도 이른바 Expansion 이라는 이름으로 이 기능이 제공되고 있다. 사용법은 sed 와 거의 비슷한데, s 를 쓸 필요는 없다. 앞에

문자열 바꾸기(String Substitution): sed vs perl

앞으로는 이 작업을 할 때 sed 는 완전히 접어야만 하겠다. sed 가 강력한 도구이긴 하지만, delimiter 에 문제가 있어, 여러모로 신경써야할 점이 많기 때문이다. 이게 뭔 소리냐 하면, sed 의 기본 delimiter(구분자)는 /, 즉 Slash(우리말로는 ‘빗금‘)가 기본인데, 만약 Pattern 이나 Substitution 에 / 가 들어가 있으면 오류가 발생하기에, 주의를 해야한다는 뜻이다. 다음 예를 보자. 원래

grep, egrep…???

이 둘의 차이는, 확장 Regex(extended regular expressions) 가 지원되느냐 마느냐이다. 이게 또 뭔 소린가 하면.. 간단하게 말해서, . 을 그냥 문장부호 .(즉, Pattern) 으로 인식할지, 아니면 모든 문자(즉, Metacharacter 역할)를 뜻할지를 결정해준다. 그냥 grep 면 . 은 Pattern 이고, egrep 면 Metachracter 가 된다. 그런데.. 다음과 같이하면 오류가 발생한다. 왜?? 왜 이런 오류가..? 게다가 뭔

perl -C 옵션

우분투 18.04, perl 5.26.1 에서, 다음 명령을 내리면 엉뚱한 결과를 받게 된다. 원했던 값이 아닌, 문자라 할 수도 없는 쓰레기값이 출력되었는데.. 이를 바로 잡기 위해서는 -C 를 붙여줘야 한다. -C 는 Unicode 와 연관이 된 명령이라고 하는데, 자세한 사항은 perldoc perlrun 에서 알아볼 수는 있으나.. 봐도 잘 모르겠고, 그냥 이렇게 쓰면 된다는 사실만 기억하자. 헌데,

sed 로 처리하기 어려운 경우, perl 로는 손쉽게 가능.

shell script 를 사용해서, 완벽(효율면은 아니고 효과에서)하게 처리했다고 생각했는데.. 엉뚱한 쪽에서 오류가 발생했다. m3u 파일을 편집/수정하는 스크립트를 만들었다.m3u 를 사용하다보면, 실제로는 이미 지워진 음원이 m3u 안에 그대로 남아있는 경우가 종종 생긴다. 이런 ‘유령’이 몇몇 남아있다고 해도 mp3 재생기에서 오류를 내지는 않지만, 만약 m3u 내에 있는 목록 모두가 실제로 존재하지 않을 경우엔 결국은 에러가 표시된다. 아무튼

perl one-liner, 선택사항 정리.

sed 문제로 고민하다가, 결국 perl one-liner 를 선택하게 됐다. 단기간에 속성 흡입(?)을 한 터라, 금방 잊어버릴 듯도 하지만.. 자세한 설명은 perldoc perlrun 에서 볼 수 있다. perldoc 은 우분투에선 기본 설치가 되어 있지 않은데, apt install perl-doc 으로 가능하다. 간단하게 정리해본다. One liner 는 이런 형식이다. 순서대로 설명한다. -p : 다음과 같은 코드를 Perl 에서