将输出重定向到输出文件

时间:2016-12-01 06:09:59

标签: bash unix

我有一个输入文件,其中包含以下数据:

one two
three
fish hat
cat hop

我必须将以下内容写入输出文件

one two three
fish hat cat hop

这是我到目前为止的代码

#!/bin/bash
#

# input and output files
FILE=$1
FILE2=$2

#checks to see if the input file exists
if  [ -f $FILE ];then
echo "file $FILE  found!"
else
echo "file $FILE does not exist"
exit 1
fi

#check to see if output file is empty
 if [ -s $FILE2 ]; then
echo "$FILE2 already has data!"
exit 1
fi

#Joins every two input lines
while read first; do read second; echo "$firstLine $secondLine";
done < $FILE

 cat $FILE &> $FILE2

我将输出文件打印到控制台但是当我使用cat命令显示输出文件的内容时。它显示原始输出文件。有人可以指出我正在犯的错误吗?

2 个答案:

答案 0 :(得分:0)

这将满足您的要求:

cat $file | paste -d ' ' - -

并将输出发送到file2:

cat $file | paste -d ' ' - - > $file2

注意:使用小写变量,大写变量保留用于环境变量。

答案 1 :(得分:0)

done < $FILE

 cat $FILE &> $FILE2
     

我将输出文件打印到控制台但是当我使用cat命令显示输出文件的内容时。它显示原始输出文件。有人可以指出我正在犯的错误吗?

错误是您不首先将输出写入输出文件,即使您这样做,也要用cat …覆盖输出文件;删除后者并将上面的行更改为:

done <$FILE >$FILE2