跳到主要内容

编写Shell显示file.txt的1,3,5,7,10,15行?

参考答案:

你可以使用sed命令来显示file.txt的特定行。以下是显示第1, 3, 5, 7, 10, 15行的命令:

sed -n '1p;3p;5p;7p;10p;15p' file.txt

这里的-n选项告诉sed不要自动打印模式空间的内容。p命令用于打印模式空间的内容。每个数字后面跟着p表示打印那一行。

但是,如果你经常需要这样做或者需要显示的行数很多,上述方法可能会变得冗长。你可以使用循环和awksed来简化这个过程。以下是一个使用awk的示例:

awk 'NR==1 || NR==3 || NR==5 || NR==7 || NR==10 || NR==15' file.txt

这里,NRawk的内建变量,表示当前处理的行数。当NR等于你想要的行号时,awk会打印那一行。

另一种方法是使用xargshead/tail组合:

echo -e "1\n3\n5\n7\n10\n15" | xargs -I{} sh -c 'head -n {} file.txt | tail -n 1'

这个命令首先打印出你想要的行号,然后对每个行号使用xargs来执行一个shell命令。这个shell命令使用head来提取到那一行为止的所有内容,然后使用tail来只显示那一行。