언더컷을 수행하는 방법은 무엇입니까?

언더컷을 수행하는 방법은 무엇입니까?

나는 아직 이것에 익숙하지 않습니다. 물어보고 싶은데 리버스 컷은 어떻게 하나요?

예;

./24feb/frfr

cut 명령 이후의 결과는 ./feb/frfr.

어떻게 하나요?

답변1

% echo ./24feb/frfr | cut -c 1-2,5-
./feb/frfr

그럴 것이다cut -c 3-4, 모든 문자를 출력합니다(바이트현재 버전의 GNU와 비교하면 cut세 번째와 네 번째 줄을 제외한 모든 줄입니다.

GNU 구현에는 cut다음 옵션도 있습니다 --complement.

cut --complement -c 3-4

십진수의 첫 번째 시퀀스를 제거하려면 다음을 사용할 수 있습니다 sed.

sed 's/[0-9]\{1,\}//'

세 번째 위치에 있는 경우에만 제거하려면 다음을 수행하십시오.

sed 's/^\(..\)[0-9]*/\1/'

또는 어떤 패턴이 삭제를 트리거해야 하는지 명확하게 설명하세요.

sed 's|^\(./\)[0-9]*\([[:lower:]]\{3\}/\)|\1\2|'

이렇게 하면 <0-or-more-digits>한 줄의 일치 항목이 제거됩니다 ./<0-or-more-digits><3-lowercase-letters>/<anything>.

답변2

그것은 불가능합니다. 절단은 필드 구분 기호의 가용성에 따라 달라집니다. 예제의 필수 입력에는 필드 구분 기호로 사용할 수 있는 문자가 없습니다. 입력 형식을 더 잘 제어할 수 없다면 전단은 작업에 적합한 도구가 아닙니다. 이는 sed 또는 awk를 사용하여 달성할 수 있습니다. 예를 들어 sed에서는 다음과 같습니다.

sed 's/[0-9]//g'

답변3

위에서 허용된 답변 외에도 명령 대체를 사용하여 이를 단일 명령으로 결합 cut하고 바꿀 수 있습니다.sed

이 방법은 제거하려는 이름의 문자 위치를 알고 있거나 문제가 있는 값을 알아낼 수 있는 경우에만 작동합니다.

name="./24feb/frfr"
cut_start=3
cut_end=4

echo "${name}" | sed "s/$(echo "${name}" | cut -c${cut_start}-${cut_end})//"

./2월/frfr

참고로... 일반적으로 '사용 되지만 이 경우에는 확장 명령 대체를 허용하기 위해 sed사용해야 합니다 ."

관련 정보