Содержание файла печати без первых и последних строк

Если это находится в Вашем пути, то можно работать также type git или which git. which команда имела проблемы при получении надлежащего пути (беспорядок между средой и точечными файлами). Для type, можно получить просто путь с -p аргумент.

Если это не находится в Вашем пути, то лучше искать его с locate -b git Это найдет что-либо названным 'мерзавцем'. Это будет длинный список, так могло бы быть хорошо квалифицировать его с locate -b git | fgrep -w bin.

54
25.05.2016, 22:40
5 ответов

Только с sed, без любых каналов:

sed '1d;$d' file.txt

Примечание:

  • 1 имейте в виду первую строку
  • d средний удаляют
  • ; разделитель для 2 команд
  • $ имейте в виду последнюю строку
97
27.01.2020, 19:33

Вы не должны знать количество строк заранее. tail и head может взять смещение с начала или конца файла соответственно.

Этот канал запускается во второй строке файла (пропускающий первую строку) и останавливается в предпоследнем (пропуск заключительной строки). Чтобы пропустить больше чем одну строку вначале или закончиться, скорректируйте числа соответственно.

tail -n +2 file.txt | head -n -1

при выполнении его наоборот, работает то же, конечно:

head -n -1 file.txt | tail -n +2
36
27.01.2020, 19:33
  • 1
    я не знаю почему, но head -n -1 удаляет первое И последнюю строку моего .txt файл, на Ubuntu 14.04.2LTS. право –  Sopalajo de Arrierez 23.12.2015, 01:20

В Python я бы понравился бы это.

#!/usr/bin/python3
import re
import sys
file = sys.argv[1]
with open(file, 'r') as f:
    L = []
    for line in f:
        line = re.sub(r'\n', r'', line)
        L.append(line)
    print('\n'.join(L[1:-1]))

Вставьте вышеуказанный код в файл и назовите его как Script.py . Запустите скрипт к файлу, с которым вы хотите проверить.

python3 script.py /path/to/the/file

Пример:

$ cat file
foo
apple
banana
bar
$ python3 script.py file
apple
banana
2
27.01.2020, 19:33

Вот как это сделать с командой awk:

awk 'NR>2 {print t} {t=$0}'

Также другой способ для команды sed:

sed '1d;x' file.txt

x расширенная команда sed, она переключает текущую строку с предыдущей: ток поступает в буфер, предыдущая - на экран и так далее, в то время как sed построчно обрабатывает поток (поэтому первая строка будет пустой). Решение

awk на каждом шаге (строке) помещает текущую строку в переменную и начинает выводить её только после того, как пройдет вторая строка. Таким образом, мы получили дерьмовую последовательность строк на экране от второй до последней. Последняя строка опускается, так как строка находится в переменной и должна быть выведена только на следующем шаге, но все шаги уже заканчиваются и мы никогда не увидим строку на экране.

Та же идея в perl:

perl -ne 'print $t if $.>2 ; $t=$_' file.txt

$. означает номер линии, а $_ - текущую линию.
perl -n - это сокращение для , в то время как(<...>) {...} структура и -e - для встроенного скрипта.

9
27.01.2020, 19:33

Для пользователей Mac:

На Mac head -n -1 не работает. Вместо этого переверните файл, отрежьте первую строку, а затем переверните ее обратно:

tail -r file.txt | tail -n +2 | tail -r

Объяснение:

  1. tail -r : меняет порядок строк во входных данных

  2. tail -n +2 : печатает все строки, начиная со второй строки во входных данных

2
27.01.2020, 19:33

Теги

Похожие вопросы