【问题标题】:Output number of lines in a text file to screen in Unix [duplicate]在Unix中将文本文件中的行数输出到屏幕[重复]
【发布时间】:2012-10-04 16:36:43
【问题描述】:

可能重复:
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 认为它只会存储数字,其余的只是为了视觉,但它不起作用:(

感谢您的帮助

【问题讨论】:

标签: bash unix


【解决方案1】:

有两种 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")"

希望这会有所帮助 =)

【讨论】:

  • 不需要 'cat' 或任何重定向/管道 - 只需:x=$(wc -l /path/to/file.txt)
【解决方案2】:

你可以试试:

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

或(来自另一个.anon.coward 的评论):

x=`wc -l < stats.txt`

【讨论】:

  • 您可以在没有cat 和管道的情况下使用x=$(wc -l &lt;stats.txt)
  • @gokcehan 当我运行它时---- cat coursefile.txt | wc -l -----它起作用了。但是,当我尝试存储它时,出现错误:-bash: x: command not found
  • 不要忘记反引号 (``)
  • @gokcehan 我使用了反引号/反引号,但它不起作用,如果有帮助,请使用 bash shell
  • 我可以在我的 bash 上运行它。你有什么错误?
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2014-09-21
相关资源
最近更新 更多