我試圖遍歷目錄中的每個文件和文件夾,並將文件名的一部分提取到一個變量,但我不能讓sed正常工作。我要麼獲得所有的文件名,要麼沒有。如何在OS X上使用sed提取子字符串?
這個版本的腳本應該捕捉整個文件名:
#!/bin/bash
for f in *
do
substring=`echo $f | sed -E -n 's/(.*)/\1/'`
echo "sub: $substring"
done
而是我得到什麼:
sub:
sub:
sub:
sub:
...
這個版本應該給我只是第一個字符的文件名:
#!/bin/bash
for f in *
do
substring=`echo $f | sed -E 's/^([a-zA-Z])/\1/'`
echo "sub: $substring"
done
而是我得到整個文件名:
sub: Adlm
sub: Applications
sub: Applications (Parallels)
sub: Desktop
...
我試過它無數次的迭代,它基本上可以歸結爲是,如果我使用-n
我得到什麼,如果我不我得到整個文件名是什麼。
有人可以告訴我如何得到第一個字符嗎?
或者,我的總體目標是能夠提取一個子字符串並將其存儲到一個變量中,如果有人有更好的方法來處理它,那也是值得讚賞的。
在此先感謝。
我認爲你想'grep -o'而不是sed – FDinoff
你不應該使用陳舊過時的backtics。像這樣使用括號'var = $(code)' – Jotne
爲什麼我的問題得到了低估?要求我可以避免將來的錯誤。 – cutmancometh