сочетание кота и хвоста

Я пытаюсь объединить команды cat и tail:

Нравится:

У меня есть имя файла «текст1», и я хочу объединить его с именем файла «текст2». Но сначала я хотел удалить 7 строк из файла text1, прежде чем объединить его в файл text2.

     tail --lines=+7 text1 | cat  text2 > out_put 

У меня это не работает на Ubuntu 12.04


person Yacob    schedule 10.12.2013    source источник
comment
возможный дубликат unix - начало и конец файла   -  person Pierre    schedule 10.12.2013
comment
+1 за этот креативный заголовок вопроса.   -  person Timothy Groote    schedule 10.12.2013


Ответы (3)


{ tail --lines=+7 text1; cat text2; } > out_put 

or

tail --lines=+7 text1 | cat - text2 > out_put 

Передача - указывает cat сначала читать из stdin, а затем из text2.

person John Kugelman    schedule 10.12.2013

Сделайте это в два шага/команды:

tail --lines=+7 text1 > output
cat text2 >> output

Или даже вот так, который выполнит второй, если первый был успешным:

tail --lines=+7 text1 > output && cat text2 >> output

Обратите внимание, что мы используем >> для добавления данных в файл, поэтому они будут добавлены после предыдущих данных, существующих в файле. С помощью > мы просто удаляем все, что было до этого.

person fedorqui 'SO stop harming'    schedule 10.12.2013

Альтернативой является использование «здесь-строки» (описано в man bash):

cat - <<< "$(tail --lines=+3 text1)" text2 > out_put
person MAGA    schedule 03.03.2018