输出要在Unix中屏幕显示的文本文件中的行数

时间:2012-10-04 16:36:44

标签: bash unix

  

可能重复:
  bash echo number of lines of file given in a bash variable

想知道如何将文本文件中的行数输出到屏幕,然后将其存储在变量中。 我有一个名为stats.txt的文件,当我运行wc -l stats.txt时,它会输出8 stats.txt

我尝试x = wc -l stats.txt认为它只会存储数字而其余部分仅用于视觉但不起作用:(

感谢您的帮助

2 个答案:

答案 0 :(得分:17)

执行此操作有两种POSIX标准语法:

x=`cat stats.txt | wc -l`

x=$(cat stats.txt | wc -l)

它们都运行程序并使用命令的标准输出替换脚本中的调用,在这种情况下将其分配给$x变量。但是,要注意两个修剪结束换行符(这实际上是你想要的,但是当你期望换行时,有时可能会很危险。)

此外,第二种情况可以轻松嵌套(例如:$(cat $(ls | head -n 1) | wc -l))。您也可以使用第一种情况,但它更复杂:

`cat \`ls | head -n 1\` | wc -l`

还有报价问题。您可以在双引号中包含这些表达式,但是使用反向标记,您必须继续在命令内引用,而使用括号允许您“启动新引用”组:

"`echo \"My string\"`"
"$(echo "My string")"

希望这有助于=)

答案 1 :(得分:3)

你可以试试:

x=`cat stats.txt | wc -l`

或(来自another.anon.coward的评论):

x=`wc -l < stats.txt`