wc -l file.txt
Run Code Online (Sandbox Code Playgroud)
输出行数和文件名.
我只需要数字本身(不是文件名).
我可以做这个
wc -l file.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
但也许有更好的方法?
Nor*_*sey 190
试试这种方式:
wc -l < file.txt
Run Code Online (Sandbox Code Playgroud)
pjm*_*rse 21
cat file.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
根据手册页(对于BSD版本,我没有要检查的GNU版本):
如果未指定文件,则使用标准输入,不显示文件名.提示将接受输入,直到在大多数环境中接收EOF或[^ D].
Des*_*ane 12
要做到这一点没有领先的空间,为什么不:
wc -l < file.txt | bc
Run Code Online (Sandbox Code Playgroud)
小智 11
怎么样
wc -l file.txt | cut -d' ' -f1
Run Code Online (Sandbox Code Playgroud)
即管道输出wc到cut(其中分隔符是空格,只选择第一个字段)
小智 5
怎么样
grep -ch "^" file.txt
Run Code Online (Sandbox Code Playgroud)
我也遇到类似的问题,试图在没有提供的领先空白的情况下获取字符数wc,这导致我进入了此页面。在这里尝试答案之后,以下是我在Mac(BSD Bash)上进行的个人测试的结果。同样,这是为了字符计数;行数你会做的wc -l。echo -n省略尾随换行符。
FOO="bar"
echo -n "$FOO" | wc -c # " 3" (x)
echo -n "$FOO" | wc -c | bc # "3" (?)
echo -n "$FOO" | wc -c | tr -d ' ' # "3" (?)
echo -n "$FOO" | wc -c | awk '{print $1}' # "3" (?)
echo -n "$FOO" | wc -c | cut -d ' ' -f1 # "" for -f < 8 (x)
echo -n "$FOO" | wc -c | cut -d ' ' -f8 # "3" (?)
echo -n "$FOO" | wc -c | perl -pe 's/^\s+//' # "3" (?)
echo -n "$FOO" | wc -c | grep -ch '^' # "1" (x)
echo $( printf '%s' "$FOO" | wc -c ) # "3" (?)
Run Code Online (Sandbox Code Playgroud)
我cut -f*一般不会依赖该方法,因为它要求您知道任何给定输出可能具有的前导空格的确切数量。和grep一个适用于计数行,而不是文字。
bc是最简洁的,并且awk和perl显得有些矫枉过正,但他们都应该是比较快和便携不够。
还要注意,其中一些也可以调整为从普通字符串中修剪周围的空白(以及echo `echo $FOO`另一个巧妙的技巧)。
| 归档时间: |
|
| 查看次数: |
142811 次 |
| 最近记录: |