2015-09-28 22 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 ..)