ファイルの各行から最初の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