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