2015-09-28 72 views
-2

试图做这个小练习。这不是作业或任何事情,但我想确保我理解它。使用猫,头,尾巴和tr与管道

创建2个文件。 file1将有4行文字。 file2将有6行文字。创建一个管道,它将打印file1的最后2行和file2的前3行。在file1中将所有小写字符都转换为大写字母,并将所有大写字符转换为小写字母file2。使用不需要临时文件。

使用两个tr命令在流水线开始处的命令分组。

而且我的脚本:

#!/bin/bash 

i=0; 
while [ $i -lt 4 ] 
do 
    echo "line $i of file1"; 
    i=`expr $i + 1`; 
done > file1 

i=0; 
while [ $i -lt 6 ] 
do 
    echo "LINE $i OF FILE2"; 
    i=`expr $i + 1`; 
done > file2 

{ 
    tr [:lower:] [:upper:] < `cat file2 file1 | tail -2`; 
    tr [:upper:] [:lower:] < `cat file2 file1 | head -3`; 
} 

我觉得这是接近,但我不断收到ambiguous redirect错误。任何帮助将不胜感激。

回答

0

变化的顺序

cat file_1 file | tail -2 | tr ... 

或做进程替换

tr ... <(cat ... | tail ..)