编写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来只显示那一行。