programing

행의 첫 번째 N자를 삭제하기 위한 unix 명령어는 무엇입니까?

javajsp 2023. 4. 19. 22:15

행의 첫 번째 N자를 삭제하기 위한 unix 명령어는 무엇입니까?

예를 들어 다음과 같은 경우가 있습니다.

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번째 문자까지를 의미하는 'N', 'N-M', '-M'과 같은 다른 arg도 사용할 수 있습니다.

그러면 입력 파일의 각 행에 대한 작업이 수행됩니다.

x=hello

echo ${x:1}

elo를 반환하다

필요에 따라 1을 N으로 바꿉니다.

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

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

사용방법:

$ stringStripNCharsFromStart "12abcdefgh-" 2
# 2abcdefgh-

스크린샷:

콘솔 결과 스크린샷

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

처음 900자를 삭제합니다.

cut900-을 사용하여 행의 끝에 900번째 문자를 표시합니다.

하지만 이 모든 것을 GREP로 연결하면 아무것도 얻을 수 없다.

생각합니다awk는 필터링 및 필터링된 라인에서 필요한 문자열 조작 기능을 모두 수행할 수 있기 때문에 최적의 도구입니다.

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

또는

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

언급URL : https://stackoverflow.com/questions/971879/what-is-a-unix-command-for-deleting-the-first-n-characters-of-a-line