Linux 如何打印包含特定编号的行号?

Linux 如何打印包含特定编号的行号?,linux,bash,awk,Linux,Bash,Awk,我有6000行,每个数字浮动一行 我的代码 awk '5.400000e+03 {print $0}' base.txt 只打印数字 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 5.400000e+03 我改成 awk '{if($0=="5.40000

我有6000行,每个数字浮动一行

我的代码

awk '5.400000e+03 {print $0}' base.txt
只打印数字

5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
5.400000e+03
我改成

awk '{if($0=="5.400000e+03 ") print NR}' base.txt
但是什么都没有! 我应该尝试什么?

您可以使用:

awk '$1 == "5.400000e+03" {print NR, $0}' base.txt
$1
将始终匹配第一列,无论问题中显示的数据后面是否有空格。使用
print NR,$0
打印以记录编号为前缀的每条记录。

您也可以使用grep:

# just the line number
grep -wn "5.400000e+03" base.txt | cut -d: -f1
# both
grep -wn "5.400000e+03" base.txt

命令中的字符串中有空格,但文件中没有。实际上,这是典型的
grep
作业。回答得好!因此,如果不匹配像
15.400000e+03
,请使用锚定:
grep-n'^5.400000e+03'
。或者使用非正则表达式匹配:
grep-Fw'5.400000e+03'