使用cat,head,tail和tr与管道

时间:2015-09-28 02:25:02

标签: linux bash unix pipeline

尝试做这个小练习。这不是作业或任何事情,但我想确保我理解它。

  

创建2个文件。 file1将有4行文字。 file2将有6行文字。创建一个管道,打印最后两行file1和前三行file2。将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错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

更改订单

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

或进行流程替换

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