编写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
表示打印那一行。
但是,如果你经常需要这样做或者需要显示的行数很多,上述方法可能会变得冗长。你可以使用循环和awk
或sed
来简化这个过程。以下是一个使用awk
的示例:
awk 'NR==1 || NR==3 || NR==5 || NR==7 || NR==10 || NR==15' file.txt
这里,NR
是awk
的内建变量,表示当前处理的行数。当NR
等于你想要的行号时,awk
会打印那一行。
另一种方法是使用xargs
和head
/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
来只显示那一行。