첫 번째와 마지막 문자가 있는 경우 제거

첫 번째와 마지막 문자가 있는 경우 제거

파일의 각 줄에서 처음 두 문자(항상 동일)와 마지막 "/"(있는 경우)를 제거해야 합니다.

파일 F1의 입력은 다음과 같습니다.

^./inst/oracle/
^./tmp/
^./inst/maj/
^./mkcd
^./var/adm/ras/livedump/

사용:

cat F1 | sed 's#^\^\.\(.*\)/$#\1#'

나는 다음과 같은 결과를 얻습니다.

/inst/oracle
/tmp
/inst/maj
^./mkcd
^./var/adm/ras/livedump/

끝에 "g"가 있는 sed는 동일한 결과를 갖습니다.

마지막 몇 줄은 무시됩니다. 처음 3줄에 대한 작업을 수행한 다음 중지하는 이유를 이해할 수 없습니다.

답변1

이 시도:

sed 's/\^\.//;s|/$||' file

산출:

/inst/오라클
/tmp
/inst/maj
/mkcd
/var/adm/ras/livedump

답변2

다양성을 위해 대신 여러 줄 스크립트를 사용하는 솔루션은 다음과 같습니다 sed.

while IFS='' read -r line
do
  line="${line%/}"
  echo "${line#??}"
done

답변3

이것은 작동합니다:

sed 's|\^\.\(.*[^\/]\)\/*$|\1|g' file

산출:

/inst/oracle  
/tmp  
/inst/maj  
/mkcd   
/var/adm/ras/livedump

관련 정보