2011-11-21 74 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