2

例えば:

/some/long/path/we/need/to/shorten

それ自体を含め、「/」の 6 回目の出現後に削除する必要があります。

/some/long/path/we/need

sed を使用してこの解決策を思いつきましたが、これは一種の回避策です。

path=/some/long/path/we/need/to/shorten
slashesToKeep=5
n=2+slashesToKeep
echo $path | sed "s/[^/]*//$n;s/\/\/.*//g"

よりクリーンなソリューションは大歓迎です!

4

3 に答える 3

5

入力

/some/long/path/we/need/to/shorten

コード

ソリューションをカット

echo '/some/long/path/we/need/to/shorten' | cut -d '/' -f 1-6

AWK ソリューション

echo '/some/long/path/we/need/to/shorten' | awk -F '/'  '{ for(i=1; i<=6; i++) {print $i} }' | tr '\n' '/'|sed 's/.$//'

出力

/some/long/path/we/need
于 2013-05-05T08:58:34.663 に答える
4

これはうまくいくかもしれません(GNU sed):

sed 's/\/[^\/]*//6g' file
于 2013-05-05T11:00:52.787 に答える
2

ぎこちない:

awk -F'/' 'BEGIN{OFS=FS}{NF=6}1'

実際に:

$ echo /some/long/path/we/need/to/shorten | awk -F'/' 'BEGIN{OFS=FS}{NF=6}1' 
/some/long/path/we/need
于 2013-05-05T12:03:36.647 に答える