我目前正在编写一个shell脚本,有时可能会输出错误到文件中,但由于该错误并不重要,在没有错误的情况下一切正常。因此我需要将这个错误移除。
我有一个脚本,以下是它的内容:
ftp ftp://$2:$3@$1 << BLOCK > $5
cd "$4"
ls
quit
BLOCK
$5是FTP命令输出写入的文件。因此,在该文件中,我有以下内容:
total 8
-rw-r--r-- 1 root root 42 Dec 17 14:26 test1.txt
-rw-r--r-- 1 root root 6 Dec 17 14:08 test2.txt
有时候我会遇到错误
?Invalid command.
,所以我使用sed
来从文件中删除错误。我已经将shell脚本更改为以下内容。请注意,为了测试,我在FTP中放置了error
,以确保我能够收到上述错误消息。ftp ftp://$2:$3@$1 << BLOCK > $5
cd "$4"
ls
error
quit
BLOCK
fileout=$(sed '/?Invalid command./d' $5)
echo $fileout > $5
这个方法是有效的,因为它删除了错误信息,但同时也删除了换行符,因此当我查看文件时会得到以下结果:
total 8 -rw-r--r-- 1 root root 42 Dec 17 14:26 test1.txt -rw-r--r-- 1 root root 6 Dec 17 14:08 test2.txt
我该如何保留换行符?
非常感谢您提供的任何帮助。
sed
的输出绝对荒谬。这正是管道的用途。 - William Pursell