打印由变量中的数字给出的行

时间:2017-11-30 21:02:02

标签: shell awk sed

我尝试通过变量中的给定数字来获取一行,所以我尝试使用awk命令:

我做了:

DATE_ISSUE_OPIT_SIP="31456
12390
11232
12222"

COUNTER_NUMBER=1
line=$(awk 'NR==$COUNTER_NUMBER' <<< "$Date_ISSUE_OPIT_SIP")

输出为空。

我希望输出像这样:

COUNTER_NUMBER=2
line=$(awk 'NR==$COUNTER_NUMBER' <<< "$Date_ISSUE_OPIT_SIP")
echo $line
11232

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

最简单的修复方法是用双引号替换单引号

where()

另请注意,您使用的变量名称不匹配,区分大小写。

答案 1 :(得分:1)

通过在命令行上传递内部变量,awk有一种非常简单的方法来设置内部变量:

txt="31456
12390
11232
12222"

n=2
line=$(awk 'NR==counter' counter=$n <<< "$txt")
echo "$line"
12390

这也意味着您无法轻易拥有名称中包含=的文件。

你也可以这样做:

line=$(awk -v counter=$n 'NR==counter' <<< "$txt")

注意:NR从1开始。因此,要获得第3行,您将在示例中传递3。

答案 2 :(得分:0)

也很好用sed

sed "$COUNTER_NUMBER"'!d' <<< "$DATE_ISSUE_OPIT_SIP"