Как добавить новую текстовую строку в первую строку файла? [дубликат]

С pcregrep с шаблоном вроде 12 * 3 :

pcregrep -o1 '(12*3).*'

С pcregrep или GNU grep -P :

grep -Po '^.*?\K12*3'

( pcregrep работает с байтами, превышающими количество символов, тогда как GNU grep будет работать с символами, как определено в текущей локали (и вам нужно убедиться, что ввод содержит допустимый текст в текущей локали)).

Обратите внимание, что GNU grep не будет ничего печатать, если шаблон соответствует пустой строке.

2
06.05.2016, 14:41
4 ответа
printf "%s\n" 1 i "Description of the following table:" . w | ed filename

printf выводит ed команд (по одной в каждой строке), которые затем передаются в ed filename .

ed редактирует файл в соответствии с инструкциями:

1                                        # go to line 1
i                                        # enter insert mode
Description of the following table:      # text to insert
.                                        # end insert mode
w                                        # write file to disk

BTW, ed выполняет реальное редактирование на месте, а не запись в временный файл и перемещение, как sed и большинство других инструментов для редактирования текста. Отредактированный файл сохраняет тот же индексный дескриптор в файловой системе.

5
27.01.2020, 21:48

С sed :

$ sed -e '1i\
Description of the following table:
' <file
Description of the following table:
TABLE1

1234
9555
87676
2344
7
27.01.2020, 21:48

На самом деле echo и cat достаточно, чтобы сделать то, что вы хотите:

echo "Description of the following table:" | cat - file

Аргумент - указывает cat читать из stdin.

9
27.01.2020, 21:48

Вариант awk:

gawk '
      BEGIN{print "Description of the following table:"}
      {print $0}' file > temp && mv temp file

Здесь немного больше работы, чем у sed, потому что у sed есть опция редактирования на месте -i, с помощью которой вы можете напрямую писать в файл.

2
27.01.2020, 21:48

Теги

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