最初と最後の文字がある場合は削除

最初と最後の文字がある場合は削除

ファイルの各行から最初の2文字(常に同じ)と最後の「/」(存在する場合)を削除する必要があります。

ファイル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/Oracle
/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

関連情報