我試圖構建一個腳本,其中的一部分使用'sed'標記文件名到該文件中每行的末尾,然後將輸出轉儲到主列表。 劇本給我找麻煩的一部分,這裏的sed:在變量和正則表達式中使用sed for循環
DIR=/var/www/flatuser
FILES=$DIR/*
for f in $FILES
do
echo "processing $f file...."
sed -i "s/$/:$f/" $f
cat $f >> $DIR/master.txt
done
的問題是,「sed的」語句工作的罰款之外循環,但是當我把它放在劇本,我相信這是有解釋美元符號的問題。我已經嘗試過幾乎每一個「和」的組合,以便讓它解釋變量,並且它不斷地在每行末尾放置「$ f」,或者直接失敗。 !任何輸入
@ chepner的回答是點。然而,要補充的另一件事是,你需要對_all_擴展進行雙引號,以使它們對於帶有空格的內容(或glob擴展等)是安全的......例如,「cat」$ f「> >「$ DIR/master.txt」。 – 2013-03-22 16:03:08
呃,更重要的一點 - 如果你只是想要包含在master中的名字。txt,你不應該先在原始文件上使用'sed -i';這樣做意味着您不能多次運行腳本而不添加一個以上的名稱副本,這是一個不幸的限制。 – 2013-03-22 16:15:33
OHHH我明白了什麼是錯的!在一秒鐘內發佈我的答案......暗示這不是美元符號! – pepper 2013-03-22 16:19:45