2011-11-21 71 views
0

輸入一個 成在Ubuntu shell腳本我一直在尋找通過網絡這個但沒有結果出來了,我發現這個問答&一個計算器上 Echo tab characters in bash script 但它並沒有幫助我。 通過回聲

我有一個約9000行的索引,每行有一到兩個中文字母。

任何方式我想重寫每一行,所以它只會在最後與空間相同。例如:

原指數:AB

在新的指標:AB

這是我寫的劇本,但它並沒有這樣做只是把空行每個項目後,在工作索引,沒有空間,我錯過了什麼?

這是艱難的代碼:

rm new_index.txt 
for line in $(cat index.txt) 
    do 
    echo "$line \t" >> new_index.txt 
    done 

回答

0

試試這個

while IFS= read -r line ; do 
    printf '%s \n' "$line" 
done <index.txt> new_index.txt 

這正是保持每個行但每次換行前添加一個空格。

注:printf沒有特殊的,你也可以說

echo "$line " 

,並得到同樣的效果。重要的是你如何閱讀文件。

1

嘗試用sed的

sed -e 's/$/ /' index.txt > new_index.txt 

你也可以做到就地即更新做相同的文件

sed -e 's/$/ /' -i index.txt 

通過備份

sed -e 's/$/ /' -i.bak index.txt 
1

不bashy,但它是什麼sed是!

sed 's/$/ \t/' index.txt > new_index.txt 

至於bash中,你應該有一個「-e」的回聲,使之明白,\ t是製表符,而不是一個反斜槓和T。

rm new_index.txt 
for line in $(cat index.txt) 
    do 
    echo -e "$line \t" >> new_index.txt 
    done