반응형

 

필자는 MRI 영상 데이터를 주로 다루는데, 가끔씩 중복으로 영상이 들어간 경우가 있다.

그런데 파일 명들이 규칙이 없어서 이걸 어떻게 처리할까.. 생각도 들고,

적으면 200장에서 많으면 1000장 정도 하는 것을 언제 일일이 지울까 생각하면 아득하다.

 

 

예를 들어 한 폴더안에 파일들이 다음과 같이 들어가야 하는데,

11

22

33

...

 

다음과 같이 들어간 경우들이 있다.

11

11

22

22

33

33

...

 

그럼 홀수 행만을 제거하거나, 짝수 행만을 제거해야 한다.

 

 

이럴 때 활용할 수 있는 linux 명령어가 sed 이다.

 

다음과 같은 파일이 있다고 해보자.

홀수행이나 짝수행, or 등차수열 규칙의 행들만 출력하고 싶을 때에는 sed를 사용하면 되는데,

 

sed -n '시작행~공차p'

와 같은 형태로 작성할 수 있다.

 

 

(1) 먼저 홀수행만 출력하고 싶다면,

1, 3, 5, 7, ..., 와 같은 형태이고, 이는 1(시작행)에서 2(공차)씩 늘어나는 형태이므로,

 

sed -n '1~2p' 와 같은 형태로 작성하여 출력하면 된다.

 

(2) 짝수행만 출력하고 싶을 때에도 마찬가지다.

다만 시작행이 2이므로,

sed -n '2~2p' 와 같은 형태로 작성하면 된다.

 

 

❓그럼 3개씩 중복인 경우

11

11

11

22

22

22

33

33

33

...

와 같이 중복된 형태이고, 중복을 삭제하여 출력하고 싶다면,

1행, 4행, 7행, ..., 이 출력되어야 할 것이다. 

 

여기에서 시작 행은 1이고, 3씩 늘어가는 것이므로, 

sed -n '1~3p' 형태로 작성하면 된다.

 

반응형

+ Recent posts