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

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

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

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



답변

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

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


답변

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

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


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


답변

당신은 사용할 수 있습니다 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 번째 문자를 의미합니다.

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


답변

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

처음 900자를 제거합니다

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

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


답변

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

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

또는

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


답변

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

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

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


답변