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

Mas*_*der 9 unix bash

可能重复:
bash变量中给出的bash回显文件行数

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

我试过x = wc -l stats.txt认为它只存储数字,其余只是为了视觉,但它不起作用:(

谢谢您的帮助

Jan*_*lho 17

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

x=`cat stats.txt | wc -l`
Run Code Online (Sandbox Code Playgroud)

要么

x=$(cat stats.txt | wc -l)
Run Code Online (Sandbox Code Playgroud)

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

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

`cat \`ls | head -n 1\` | wc -l`
Run Code Online (Sandbox Code Playgroud)

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

"`echo \"My string\"`"
"$(echo "My string")"
Run Code Online (Sandbox Code Playgroud)

希望这有助于=)

  • 不需要'cat'或任何重定向/管道 - 只需:x = $(wc -l /path/to/file.txt) (2认同)

non*_*one 3

你可以尝试:

x=`cat stats.txt | wc -l`
Run Code Online (Sandbox Code Playgroud)

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

x=`wc -l < stats.txt`
Run Code Online (Sandbox Code Playgroud)