У меня есть текстовый файл. Задача - получить первую и последнюю строку из файла после
$ cat file | grep -E "1|2|3|4" | commandtoprint
$ cat file
1
2
3
4
5
Нужно это без вывода кошки (только 1 и 5).
~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1
Возможно awk и более короткое решение существует ...
wc -l
не имеет ничего общего с выводом последней строки файла.Ответы:
Решение проблемы :
При чтении из
stdin
if выглядело бы так (напримерps -ef
):Голова и хвост Решение:
Когда данные поступают из команды (
ps -ef
):Решение awk :
А также пример с
ps -ef
:источник
(head -n1 file;tail -n1 file)
меня очень большая команда и труба в качестве последнего символа. Так| sed '1p;$!d'
короче один.head && tail
Действительно ли у вас работает? только дляseq 10 | (head -n1 && tail -n1)
печати1
-e 1b
- в первой строке перейти к концу сценария sed, после чего происходит неявное «печатание». Если ввод только одна строка, sed заканчивается. В противном случае для всех строк, кроме последней, удалите. В последней строке неявное «print» повторяется снова.sed
4.2.2. Приветствия.sed -n '1p;$p' file.txt
напечатает 1-ю и последнюю строку файла file.txt.источник
sed -e 1b -e '$!d'
если вы этого не хотите.Забавный чистый Bash≥4 пути:
После этого у вас будет массив
ary
с первым полем (то есть с индексом0
), являющимся первой строкойfile
, а его последним полем будет последняя строкаfile
. Обратный вызовcb
(необязательно, если вы хотите удалить все строки в массиве) сбрасывает все промежуточные строки, чтобы не загромождать память. Как бесплатный побочный продукт, у вас также будет количество строк в файле (как последний индекс массива + 1).Демо-версия:
источник
С
sed
можноd
далить линии , если НЕ1
ул одна И НЕ Ла$
т один.Используйте,
!
чтобыNOT
(отрицать) условие иX{Y..}
конструкцию, чтобы объединить условияX
ИY
:или вы можете использовать диапазон - от
2
nd до la$
- и удалить все строки в этом диапазоне, кроме$
строки:источник
Использование Perl:
Приведенный выше выводит на печать первый элемент в выводе
seq 10
черезif 1..1
, в то времяor eof
как последний также печатает последний элемент.источник
/etc
abrt
иyum.repos.d
нужно делать этот вопрос?Без кота:
или же
источник
источник