按位置

时间:2016-02-26 15:52:02

标签: linux grep

使用gdalinfo的直方图功能,我保存了文本文件中像素值的频率。我的目标是提取直方图的第一个和最后一个值并将它们保存在变量中。由于我是新的Linux环境,我不知道如何使用grep按位置选择数字。

13691313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24599

3 个答案:

答案 0 :(得分:2)

使用awk提取第一个和最后一个字段:

awk '{ print $1, $NF }' filename

或者,如果直方图存储在字符串中,则可以使用here-string:

awk '{ print $1, $NF }' <<< "$stringname"

如果您想将它们分别分配给shell变量:

$ var1="$(awk '{ print $1 }' filename)"
$ var2="$(awk '{ print $NF }' filename)"

答案 1 :(得分:0)

如果字符串没有改变,即。你可以使用相同数量的空间

echo "your string" | cut -d " " -f 1,256

切割应显示

  

13691313 24599

答案 2 :(得分:0)

您可以使用^$在开头或结尾处锚定grep表达式:

echo "your string" | grep -oE '(^[0-9]+)|([0-9]+$)'