나는 아직 이것에 익숙하지 않습니다. 물어보고 싶은데 리버스 컷은 어떻게 하나요?
예;
./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
사용해야 합니다 ."