下面你有解決方案在一個去做它,而不是到其他解決方案(*):
sed -i 's,/\([^/]*\)/, \1 ,' file
(*)除了Thaddee Tyl的一個,它是在我的之前發送的,但不幸的是最初不工作。
爲什麼最好一口氣做呢?
因爲它更健全,更高效。
這裏有一些有缺陷的比喻。如果你在圖書館尋找兩本書你以前從未去過的書,你不會找到第一本書,從圖書館出來,再次進來,開始尋找第二個忘記以前的嘗試。
「證明」
# use tmpfs to conduct test in memory, avoiding disk I/O overhead
$ mkdir stupid-sed-speed-test
$ sudo mount -t tmpfs tmpfs stupid-sed-speed-test/ -o size=1050M
$ cd stupid-sed-speed-test/
# create 512 MB + "//\n" at the end
$ awk 'BEGIN{printf"%*s",512*1024**2,"";print"//";exit}' >file
# "forgetting" solution
$ time sed -e 's|/| |' -e 's|/| |' file >/dev/null
real 0m4.817s
user 0m3.388s
sys 0m1.424s
$ time sed -i -e 's|/| |' -e 's|/| |' file
real 0m5.450s
user 0m3.360s
sys 0m2.076s
# recreate 512 MB + "//\n" at the end
$ awk 'BEGIN{printf"%*s",512*1024**2,"";print"//";exit}' >file
# "one go" solution
$ time sed 's,/\([^/]*\)/, \1 ,' file >/dev/null
real 0m3.548s
user 0m2.080s
sys 0m1.464s
$ time sed -i 's,/\([^/]*\)/, \1 ,' file
real 0m4.155s
user 0m2.068s
sys 0m2.080s
(我的硬件規格對於那些好奇他們:Desktop)
差異肯定不是一個令人興奮的一個,但有25%有時很多。
我認爲你需要刪除'g's。 –
我想你的意思是'sed -i -e's |/| |」 -e的|/| |'' –
@Michael,是的,我很快編輯了這個。 :) – ssapkota