С pcregrep
с шаблоном вроде 12 * 3
:
pcregrep -o1 '(12*3).*'
С pcregrep
или GNU grep -P
:
grep -Po '^.*?\K12*3'
( pcregrep
работает с байтами, превышающими количество символов, тогда как GNU grep будет работать с символами, как определено в текущей локали (и вам нужно убедиться, что ввод содержит допустимый текст в текущей локали)).
Обратите внимание, что GNU grep
не будет ничего печатать, если шаблон соответствует пустой строке.
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
и большинство других инструментов для редактирования текста. Отредактированный файл сохраняет тот же индексный дескриптор в файловой системе.
С sed
:
$ sed -e '1i\
Description of the following table:
' <file
Description of the following table:
TABLE1
1234
9555
87676
2344
На самом деле echo
и cat
достаточно, чтобы сделать то, что вы хотите:
echo "Description of the following table:" | cat - file
Аргумент -
указывает cat
читать из stdin
.
Вариант awk:
gawk '
BEGIN{print "Description of the following table:"}
{print $0}' file > temp && mv temp file
Здесь немного больше работы, чем у sed, потому что у sed есть опция редактирования на месте -i, с помощью которой вы можете напрямую писать в файл.