2015-02-11 33 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) 
相关问题