从文件读取并使用前导空格写入文件字符串

时间:2011-11-25 13:15:10

标签: bash

我想将行从一个文件复制到另一个文件:

count=1
while read -r i
do    
    echo $i
    (( count++ ))
done < "file1" > file2

但是如果它们在file1中,我在文件2中的行中没有任何前导空格。

3 个答案:

答案 0 :(得分:3)

这是因为IFS(内部字段分隔符)的值将删除这些空格。默认情况下,它基于空格和换行符分开,我相信。解决此问题的方法是暂时将IFS设置为换行符。

#!/bin/bash

IFS="
"

count=1

while read -r i || [[ -n "$i" ]]
do
    echo $i 
    (( count++ ))
done < "file1" > file2

unset IFS

答案 1 :(得分:1)

这是另一种方法:

sed -n p < file1 > file2 ; count=$(wc -l file2)

答案 2 :(得分:1)

您可以使用line命令:

count=1
while i=$(line)
do    
    echo "$i"
    (( count++ ))
done < "file1" > file2

但是,这明显慢于read,因为read是内置的bash而line是可执行文件。