줄의 처음 N자를 삭제하는 유닉스 명령은 무엇입니까?


238

예를 들어 다음을 원할 수 있습니다.

tail -f logfile | grep org.springframework | <command to remove first N characters>

나는 이것을 tr할 수있는 능력 이 있다고 생각 했지만 확실하지 않습니다.

답변:


355

사용하십시오 cut. 예 : 각 줄의 처음 4자를 제거하려면 (예 : 5 번째 문자에서 시작) :

tail -f logfile | grep org.springframework | cut -c 5-

1
파이프가 왜 작동하지 않는지 아십니까? 본질적으로 해당 명령을 실행할 때 'cut'은 결과를 stdout에 인쇄하지 않습니다 ... 방금 'tail -f logfile | -c 잘라 5 '내가 결과를 볼 수 있습니다 ... 문제는 그렙 함께해야 내가 참고로 감사를 Cygwin에서 사용하고 있습니다
les2

마지막 파이프를 추가하고 자르지 않으면 어떻게됩니까? 기본적으로 줄의 마지막 부분을 제거하면?
LB40 2016 년

파이프를 'cut'에 추가하면 로그 파일을 "꼬리로 묶고"grep으로 필터링합니다 (즉, "org.springframework"가있는 모든 줄은 표준 출력으로 인쇄됩니다). 'grep' 'cut'이 제대로 작동합니다 ... grep을 사용하는 방법에 문제가 있다고 생각합니다 ... cygwin 일 수도 있습니다.
les2

1
오 내가 봐 ... 왜 꼬리를 사용합니까? grep org.springframework logfile | cut -c 5- 그러나 sed가 더 좋다고 생각합니다 :-)
LB40

6
문제는 grep이 터미널에 쓰지 않는 것을 알 수 있기 때문에 잘라 내기 전에 큰 청크를 버퍼링한다는 것입니다. grep --line-buffered "org.springframework이 문제를 해결하는 데 사용하십시오 .
Steen Schütt

48
sed 's/^.\{5\}//' logfile 

5를 원하는 숫자로 바꿉니다. 트릭을 수행해야합니다 ...

각 줄마다 편집 sed 's/^.\{5\}//g' logfile


29

당신은 사용할 수 있습니다 cut:

cut -c N- file.txt > new_file.txt

-c: 문자

file.txt: 입력 파일

new_file.txt: 결과물 파일

N-: N부터 끝까지 문자를 잘라내어 새 파일로 출력합니다.

'N', 'N-M', '-M'은 각각 n 번째 문자, n 번째에서 m 번째 문자, 첫 번째에서 m 번째 문자를 의미합니다.

입력 파일의 각 줄에 대해 작업을 수행합니다.


4
tail -f logfile | grep org.springframework | cut -c 900-

처음 900자를 제거합니다

cut 900을 사용하여 줄의 끝까지 900 번째 문자를 표시합니다.

그러나 grep을 통해이 모든 것을 파이프하면 아무것도 얻지 못합니다.


4
"cut -c 1-900"은 "처음 900자를 제거하지 않습니다"-처음 900자를 남겨 둡니다. 처음 900자를 제거하려면 "cut -c 901
iammichael

또한 @iammichael의 답변에 따라 각 줄에 처음 900 자입니다
Blair Conrad

1
'cut -c 900-'은 처음 899자를 제거합니다.
Yiding Zhou

4

awk필터링 된 라인에서 필요한 문자열 조작 기능을 필터링하고 수행 할 수 있기 때문에 가장 좋은 도구 라고 생각 합니다.

tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'

또는

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'

1

다음은 bash에서 테스트 한 간단한 함수입니다. 함수의 첫 번째 매개 변수는 문자열이고 두 번째 매개 변수는 제거 할 문자 수입니다.

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

용법: 여기에 이미지 설명을 입력하십시오


2
$ {1 : $ 2}를 반향하도록 단순화 할 수 있습니다
kdubs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.