Linux command - cut

sycho·2024년 1월 2일
0

Linux Commands

목록 보기
23/30

cut

  • documentation

  • 파일에서 각 줄에 대해 조건을 만족하는 일부분만 출력하는데 이용된다.

basics

cut OPTION... [FILE]...
  • OPTION : cut의 동작방식을 결정

  • FILE : 필터링 대상 파일. 없을 경우 입력값에 대해서 받는다.

OPTIONS

  • 예시에 사용한 파일
$ cat example.txt
sed is a stream editor.
A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
But it is sed’s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

추출 방식 관련

  • -b, -c, -f가 여기에 해당된다.

  • 저 세개 중 하나가 무조건 들어가야 하며, 저 세개 중 2개 이상이 들어가서도 안된다. 즉 하나만 선택을 해서 사용해야 한다.

특정 바이트 위치를 추출 (-b)

  • -b는 몇번째 byte를 추출할지를 정한다. 일반적으로 텍스트 파일이 ASCII 형식으로 encode 되어 있으니 가능한 방식.
$ cut -b 8 example.txt
a
m
n
i

특정 위치의 문자를 추출 (-c)

  • -c는 어떤 문자'들'을 추출할지를 정한다. -b처럼 여전히 숫자를 기준으로 하나, -을 사용해서 특정 범위의 문자들을 추출하는 것이 가능하다.
$ cut -c 2 example.txt
e
 
h
u
  • -c의 경우 특정 위치 이전, 특정 위치 이후에 대해서 추출하는 것도 가능하다.
$ cut -c -4 example.txt
sed
A st
Whil
But

~$ cut -c 10- example.txt
stream editor.
editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
 sed’s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

특정 field를 추출 (-f)

  • -f 는 delimiter을 기준으로 줄을 여러 field로 나눴을 때, 어떤 field를 추출할지를 지정해가지고 사용한다. 기본 delimiter은 탭이다. (\t).

  • delimiter을 아예 포함하지 않는 문장의 경우 그냥 통째로 출력을 한다. 이 때문에 예제에 \t가 없어서 -f를 쓰면 그냥 파일 전체를 출력한다.

$ cut -f 3 example.txt
sed is a stream editor.
A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
But it is sed’s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

delimiter 지정 (-d)

  • -f에서만 활용

  • \t 말고 다른 delimiter을 지정하고 싶으면 -d를 사용하면 된다.

$ cut -d ' ' -f 3 example.txt
a
editor
some
is

여러 위치, 혹은 특정 범위에 대한 추출 (-, ,)

  • 쉼표를 사용하면 여러 위치에 대해서 지정이 가능하며, -을 사용하면 특정 범위에 대해서 지정이 가능하다.

  • , 관련 예시

sycho@DESKTOP-4RPUOID:~$ cut -b 8,10 example.txt
as
me
ns
i

sycho@DESKTOP-4RPUOID:~$ cut -c 8,10 example.txt
as
me
ns
i

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f 1,3 example.txt
sed a
A editor
While some
But is
  • - 관련 예시
sycho@DESKTOP-4RPUOID:~$ cut -b 8-10 example.txt
a s
m e
n s
is

sycho@DESKTOP-4RPUOID:~$ cut -c 8-10 example.txt
a s
m e
n s
is

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f 1-3 example.txt
sed is a
A stream editor
While in some
But it is
  • -로 이전, 이후를 추출하는 예시
sycho@DESKTOP-4RPUOID:~$ cut -b -8 example.txt
sed is a
A stream
While in
But it i

sycho@DESKTOP-4RPUOID:~$ cut -c -8 example.txt
sed is a
A stream
While in
But it i

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f -3 example.txt
sed is a
A stream editor
While in some
But it is

sycho@DESKTOP-4RPUOID:~$ cut -b 15- example.txt
m editor.
r is used to perform basic text transformations on an input stream (a file or input from a pipeline).
ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
��s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

sycho@DESKTOP-4RPUOID:~$ cut -c 15- example.txt
m editor.
r is used to perform basic text transformations on an input stream (a file or input from a pipeline).
ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
��s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f 4- example.txt
stream editor.
is used to perform basic text transformations on an input stream (a file or input from a pipeline).
ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
sed’s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

여집합 추출 (--complement)

  • 지정된 위치를 제외한 나머지 문자열 부분을 추출.
(밑은 cut -d ' ' -f -3 example.txt와 실질적으로 동일)
$ cut -d ' ' -f 4- --complement example.txt
sed is a
A stream editor
While in some
But it is

delimiter을 포함하지 않는 문장은 미출력 (-s)

  • -f에서만 활용.

  • delimiter이 없는 문장도 출력을 아예 안하도록 설정.

sycho@DESKTOP-4RPUOID:~$ cut -sf 3 example.txt
(출력 없음)

출력 delimiter 설정 (--output-delimiter)

  • -f에서만 활용

  • 출력에서 사용할 delimiter을 설정. 여러 문자도 가능하다.

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f 3-5 --output-delimiter ? example.txt
a?stream?editor.
editor?is?used
some?ways?similar
is?sed’s?ability

sycho@DESKTOP-4RPUOID:~$ cut -d ' ' -f 3-5 --output-delimiter ?@! example.txt
a?@!stream?@!editor.
editor?@!is?@!used
some?@!ways?@!similar
is?@!sed’s?@!ability

줄 delimiter을 \n 대신 \0으로 설정 (-z)

  • -c, -b, -f 모두 활용.

  • 이러면 실질적으로 첫 줄에 대한 결과만 나오게 되며 출력도 이상해진다.

sycho@DESKTOP-4RPUOID:~$ cut -zb 3-5 example.txt
d isycho@DESKTOP-4RPUOID:~$ cut -zc 3-5 example.txt
d isycho@DESKTOP-4RPUOID:~$ cut -d ' ' -zf 2-4 example.txt
is a streamsycho@DESKTOP-4RPUOID:~$
profile
CS 학부생, 핵심 관심 분야 : Embed/System/Architecture/SWE

0개의 댓글