Перенаправление вывода UNIX в добавленный файл

Попробуйте это,

join <(sort -r file2.csv) <(sort -r file1.csv)  > file3.csv
0
19.08.2020, 17:46
4 ответа

В оболочке Unix символ>>(больше больше )может использоваться для добавления к файлу, например.

command >> file.txt
1
18.03.2021, 23:11

Итак, я нашел это буквально через несколько минут после публикации.

Ответ: заменить >на >>

.

С синтаксисом:

foo bar >> output.txt
foo bar1 >> output.txt
foo bar2 >> output.txt

Одно >для записи в файл.

Двойной >должен добавляться к файлу.

1
18.03.2021, 23:11

В последних двух командах вам нужно использовать >>вместо >, что добавляет содержимое, а не полностью заменяет его, как это делает >.

1
18.03.2021, 23:11

Каждая из трех отдельных команд очищает файл output.txtперед записью в него новых данных. Вот почему в конечном итоге файл содержит только данные последней выполненной команды.

Чтобы перенаправить набор команд в файл, вы можете использовать

{
    foo bar
    foo bar1
    foo bar2
} >output.txt

или в одной строке

{ foo bar; foo bar1; foo bar2; } >output.txt

Фигурные скобки определяют составную команду . Перенаправление после завершения }перенаправляет весь вывод составной команды в целом.

Поскольку мы используем >, файл будет очищен до того, как вывод составной команды будет записан в файл output.txt. Если вы хотите добавить в файл, используйте вместо этого >>.


Другой вариант:

for operand in bar bar1 bar2; do
    foo "$operand"
done >output.txt

или, в оболочке с распорками,

for operand in bar{,1,2}; do
    foo "$operand"
done >output.txt

Здесь цикл forпредставляет собой составную команду, которая может быть перенаправлена ​​так же, как составная команда { ...; }выше.

Опять же, если вы хотите сохранить исходное содержимое output.txtи добавить только к файлу, используйте для перенаправления >>, а не >.

3
18.03.2021, 23:11

Теги

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