2015-07-29 2 views
3

Это кажется довольно глупым, но я не нашел инструмент, который делает это, поэтому я решил, что попрошу просто убедиться, что он не существует, прежде чем пытаться его кодировать я:Печать определенных строк файла в терминале

Есть ли какой-либо простой способ для cat или less определенных строк файла?

Я надеюсь на поведение, как это:

# -s == start && -f == finish 
# we want to print lines 5 - 10 of file.txt 
cat -s 5 -f 10 file.txt 

Даже что-то немного проще было бы иметь в виду, но я просто не знаю, какой-либо инструмент, который делает это:

# print from line 10 to the end of the file 
cat -s 10 file.txt 

Я думаю, что обе эти функции могут быть легко созданы со смесью head, tail и wc -l, но, возможно, есть встроенные функции, которые делают это, о чем я не знаю?

ответ

7

да AWK и СЭД может помочь

для линий 5 до 10

awk 'NR>4&&NR<11' file.txt 
sed -n '5,10p' file.txt 

для линий 10 в последней строке

awk 'NR>9' file.txt 
sed -n '10,$p' file.txt 
+0

Возможно также отметить, что из этих двух, Awk, вероятно, более достойным дальнейшего изучения. 'sed' может быть сложным, но вам все равно понадобится руководство, чтобы расшифровать любой нетривиальный скрипт. Awk - естественное расширение для сценария оболочки и будет необходимо для многих небольших задач, которые не совсем естественно делать в сценарии оболочки (хотя современные оболочки, такие как Bash, заполнили многие из этих дыр, но далеко не все) , – tripleee

0

Я знаю, что такие команды, как СЭД или AWK сделать трюк, я бы проверить эти первые.