Я пытаюсь вставить вывод команды в первую строку файла.
Например, у меня есть файл с именем «list.txt», и я хочу вставить текст, содержащий все имена файлов в этой папке. Способ направить вывод ls
в первую строку list.txt.
Большинство людей знают о sed как об инструменте для поиска и поиска и пополнения на основе регулярных выражений, но это полноценный редактор, способный вносить изменения.
Итак, вы можете выполнить такую команду. Которая вставит (1 i
) первая строка команды ls $(ls| head -1)
в list.txt
файл на месте (-i
).
sed -i "1 i$(ls| head -1)" list.txt
Возможно, есть более элегантный способ сделать это, но вы можете просто использовать несколько файлов. Например:
ls | head -n 1 > temp-list.txt
cat list.txt >> temp-list.txt
mv temp-list.txt list.txt
Не существует собственного способа перенаправления на первую строку файла, но вы все равно можете использовать временный файл для этого. Например, сначала добавьте вывод в list2.txt
, затем кот list.txt
в него и записать весь вывод обратно в list.txt
:
ls > list2.txt
cat list.txt >> list2.txt
mv list2.txt list.txt
Таким образом вы получите то, что ищете.