我尝试通过变量中的给定数字来获取一行,所以我尝试使用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
感谢您的帮助
答案 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"