Bash:sed -n参数

时间:2016-10-31 15:05:17

标签: bash algorithm

在读取ls实例的结果时,我正在尝试使用sed显示特定行的特定术语:

这是我到目前为止所做的事情:

echo $(ls -lAtro | sed -n '3p' | cut -d' ' -f 6 )

这是阅读第3行的第6个学期。我想要做的是用一个更简单的变量替换'3p',这样可以做到这样的事情:

linetoread=3
echo $(ls -lAtro | sed -n "$linetoread" | cut -d' ' -f 6 )

上面的例子当然不起作用,但你明白了。我能做些什么来实现这个目标?提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用awk -

line=3 ; 
ls -lAtro | awk -v var="$line" 'NR==var {print $6}' 

这将变量line=3并将其输入awkawk -v部分)。

NR==var可确保您获得与您的变量相对应的行。

然后,您可以更改print $6部分以匹配您想要的任何列。请注意,默认分隔符是一个空格。

当然,正如评论中所指出的,你不应该解析ls的输出。