Если это находится в Вашем пути, то можно работать также type git
или which git
. which
команда имела проблемы при получении надлежащего пути (беспорядок между средой и точечными файлами). Для type
, можно получить просто путь с -p
аргумент.
Если это не находится в Вашем пути, то лучше искать его с locate -b git
Это найдет что-либо названным 'мерзавцем'. Это будет длинный список, так могло бы быть хорошо квалифицировать его с locate -b git | fgrep -w bin
.
Только с sed
, без любых каналов:
sed '1d;$d' file.txt
Примечание:
1
имейте в виду первую строкуd
средний удаляют;
разделитель для 2 команд$
имейте в виду последнюю строкуВы не должны знать количество строк заранее. tail
и head
может взять смещение с начала или конца файла соответственно.
Этот канал запускается во второй строке файла (пропускающий первую строку) и останавливается в предпоследнем (пропуск заключительной строки). Чтобы пропустить больше чем одну строку вначале или закончиться, скорректируйте числа соответственно.
tail -n +2 file.txt | head -n -1
при выполнении его наоборот, работает то же, конечно:
head -n -1 file.txt | tail -n +2
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
Вот как это сделать с командой 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
- для встроенного скрипта.
Для пользователей Mac:
На Mac head -n -1
не работает. Вместо этого переверните файл, отрежьте первую строку, а затем переверните ее обратно:
tail -r file.txt | tail -n +2 | tail -r
Объяснение:
tail -r
: меняет порядок строк во входных данных
tail -n +2
: печатает все строки, начиная со второй строки во входных данных