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