Grep第一个数字

时间:2016-04-20 06:58:48

标签: bash awk grep

我有一个包含数字行和文件的文件:

    2    20    3    file1.txt
    93   21    42   file2.txt
    52   10    12   file3.txt

如何使用grep,awk或其他命令给我每行的第一个数字,以便它只显示:

2
93
52

感谢。

3 个答案:

答案 0 :(得分:5)

有很多方法可以做到这一点。以下是一些(假设输入文件为gash.txt):

awk '{print $1}' gash.txt

或使用纯粹的bash:

while read num rest
do
    echo $num
done < gash.txt

或使用&#34; classic&#34; sed

sed 's/[ \t]*\([0-9]\{1,\}\).*/\1/' gash.txt

或将{ERE与sed一起使用:

sed -E 's/[ \t]*([0-9]+).*/\1/' gash.txt

使用cut是有问题的,因为我们不知道空格是空格还是制表符。

顺便说一句,如果你想添加总行数:

awk '{total+=$1} END{print "Total:",total}' gash.txt

答案 1 :(得分:2)

您可以使用awk

awk '{print $1}' file 

答案 2 :(得分:1)

您可以使用:

grep -oE '^\s*[0-9]+' filename

为了处理领先的空间,我目前没有选择。你最好接受awk的回答。