2016-12-01 252 views
0

我有一個具有以下數據的輸入文件:重定向輸出到輸出文件

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命令顯示的內容打印到控制檯但是輸出文件。它顯示原始輸出文件。有人能指出我犯的錯誤嗎?

+0

用GNU sed和你的例子:'sed'1〜2 {N; s/\ n//}'file' – Cyrus

回答

0

這會做你要求什麼:

cat $file | paste -d ' ' - - 

而將輸出發送到文件2:

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

注意:使用小寫變量,大寫的變量是保留給環境變量。

0
done < $FILE 

cat $FILE &> $FILE2 

我得到當我使用cat命令顯示輸出文件的內容輸出文件打印到控制檯但是。它顯示原始輸出文件。有人能指出我犯的錯誤嗎?

的錯誤是,你不寫輸出到輸出文件擺在首位,並且即使你這樣做,你會覆蓋由cat …輸出文件;刪除後者並將上面的行更改爲:

done <$FILE >$FILE2