我在尝试:
y=$(wc -l email.txt)
它给出了行数和文件名email.txt
。我不明白为什么。
我正在使用ubuntu 13.04
答案 0 :(得分:1)
如果以文件名作为参数调用wc
,它会打印该文件名以及文件中的行数,单词和字符数(如果使用{{,则只打印行数{} 1}})。
如果从文件中运行wc -l
及其输入重定向,则wc -l
命令无法访问文件名,因此不会打印它
特别是,如果您使用wc
,则会打印 行数(后跟换行符);没有多余的空白,至少我使用的wc -l
版本。
(这有点不幸;许多Unix文本处理工具与wc
和command file.txt
的行为方式相同,但command < file.txt
没有。)
所以你需要的只是:
wc
如果由于某种原因你还想传递y=$(wc -l < email.txt)
作为命令行参数,你可以使用email.txt
来选择行数:
sed
y=$(wc email.txt | sed 's/ .*//')
命令更改输出
sed
到
1234 email.txt
并且可能对1234
以外的工具有用,无论它们如何被调用,都会打印额外的信息(例如,请参阅wc
)。
答案 1 :(得分:0)
您可以使用:
y=$(wc -l < email.txt) | tr -d ' ')