我想将行从一个文件复制到另一个文件:
count=1
while read -r i
do
echo $i
(( count++ ))
done < "file1" > file2
但是如果它们在file1中,我在文件2中的行中没有任何前导空格。
答案 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
是可执行文件。