查看由数字表示的文件的特定行

时间:2011-03-24 12:14:01

标签: linux bash file unix

好吧,这可能是一个明显的事情,但它逃脱了我,因为它可能以一种我不知道的更简单的方式完成,到目前为止.. 假设有一个“文件”,我想只查看该文件的行号“X”,解决方案是什么?

这是我能想到的:

head -X < file | tail -1  
 sed -n Xp < file

unix / gnu / linux text-tools / utils的标准集还有其他什么(或其他方式)吗?

4 个答案:

答案 0 :(得分:32)

sed -n 'Xp' theFile,其中X是您的行号,theFile是您的档案。

答案 1 :(得分:6)

in vi:

vi +X filename
EMACS中的

emacs +X filename
shell中的

nl -ba -nln filename| grep '^X '

您可以使用上下文grep cgrep而不是grep来查看匹配行上方和下方的某些行。


<强>实施例

只打印一行:

$ nl -ba  -nln  active_record.rb  | grep '^111 '
111       module ConnectionAdapters

上下文:

$ nl -ba  -nln  active_record.rb  | grep -C 2 '^111 '
109       end
110     
111       module ConnectionAdapters
112         extend ActiveSupport::Autoload
113     

用于grep检查man grep中的上下文控制:

   Context Line Control
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.

       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.

       -C NUM, -NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.

答案 2 :(得分:3)

awk one-liner:

awk "NR==$X" file

bash循环:

for ((i=1; i<=X; i++)); do
  read l
done < file
echo "$l"

答案 3 :(得分:1)

只需使用vi

vi file

在文件类型

:X

其中X是您想要查看的行号

然而,如果你真的只想看到一行,sed -n Xp文件是一个好方法