Как можно добавить несколько выводов от канала до файла, когда Вы идете?

Я пытаюсь распечатать 4 разных вещи сразу с помощью этого.

wc -l text.txt >processed.txt | cat text.txt | sort -r | tail -1 >>processed.txt | head -1 >>processed.txt | tail -5 | head -1 >>processed.txt

Моя проблема состоит в том, что это только производит первое> команда в файл, и остальные проигнорированы, я попытался переместить их напрасно. Я сделал бы это линию за линией для этих 4 выводов, но это утверждено им бывший должный быть одной строкой.

0
задан 21 January 2020 в 03:07

2 ответа

Не делайте это одним большим конвейером: это похоже на 4 отдельных операции все на том же файле. Для каждой операции нужен доступ к исходному содержанию файла.

wc   -l text.txt >processed.txt
sort -r text.txt | tail -1 >>processed.txt
head -1 text.txt >>processed.txt
tail -5 text.txt | head -1 >>processed.txt

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

{
    wc   -l text.txt
    sort -r text.txt | tail -1
    head -1 text.txt
    tail -5 text.txt | head -1 
} >processed.txt

Если, как Вы пишете, это так или иначе должно быть на одной строке, добавьте некоторые точки с запятой:

{ wc -l text.txt; sort -r text.txt | tail -1; head -1 text.txt; tail -5 text.txt | head -1; } >processed.txt
0
ответ дан 30 January 2020 в 23:33

Вы могли бы рассмотреть использование мочи

<text.txt pee 'wc -l' 'sort -r | tail -1' 'head -1' 'tail -5 | head -1' >processed.txt

pee похож tee для команд

0
ответ дан 30 January 2020 в 23:33

Другие вопросы по тегам:

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