2015-02-11 17 views
-1

我有一個文件FILE1.TXT讀取文件名計數。它只包含一個文件名FILE2.TXTLine在UNIX通過從另一個文件

如何將我發現只用FILE1.TXTFILE2.TXT記錄數/行數?我已經嘗試過的是:

cat FILE1.TXT | wc -l 

但是上面的命令不起作用。


其實,我需要顯示輸出如下:

File name is FILE2.TXT and the count is 2. 

我已經嘗試過是(使用腳本文件中的如下聲明):

echo "File name is "`cat FILE1.TXT`" and the count is " `wc -l < $(cat FILE1.TXT)` 

但上面的命令沒有工作,給了錯誤

syntax error at line 1: `(' unexpected 
+0

你需要[命令替換(http://www.gnu.org/software/ bash/manual/bash.html#Command-Substitution),並且你不需要'cat'。的 – 2015-02-11 04:04:09

+0

可能重複[通過猛砸文件的內容循環?(http://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash) – tripleee 2015-02-11 04:08:47

+1

你的修訂是命令爲我工作(在Mac OS X 10.10.2 Yosemite上使用Bash 3.2)。你在使用哪種外殼?除非您使用的是過時的shell(例如,在Solaris上爲'/ bin/sh'),否則它應該可以正常工作。寫回聲可能會更好:文件名是$(cat FILE1.TXT),計數是「$(wc -l <​​$(cat FILE1.TXT))',嵌套的簡便性是其中一個優點'$(...)'在反引號之後。將'wc'留在雙引號之外意味着'wc'輸出中的額外空白空間被'echo'刪除。 – 2015-02-11 05:27:06

回答

-1
file=$(cat FILE1.txt | grep -o "FILE2.txt") 
cat "$file" | wc -l 
+0

感謝您的回答。 FILE1.TXT只包含一個文件名。任何沒有循環的解決方案都會很好。 – TechVolcano 2015-02-11 04:26:36

+0

檢查編輯以獲得更好的解決方案。 – Shadey 2015-02-11 04:37:39

+0

有沒有必要使用這樣的變量。 – 2015-02-11 04:40:33

2

對於符合POSIX標準的外殼:

wc -l $(cat FILE1.txt) 

,或者使用bash:

wc -l $(<FILE1.txt) 

這些都將報告的文件名(但如果在FILE1.txt多個文件名會工作)。如果你不希望發送的文件名(但在文件中,只有一個名字),你可以使用:

wc -l < $(cat FILE1.txt) 
wc -l < $(<FILE1.txt) 
相關問題