Соберите цифры в начале файла
У меня есть текстовый файл, который содержит некоторые цифры, например,
There are 60 nuts and 35 apples,
but only 24 pears.
Я хочу собрать эти цифры (60, 35, 24) в начале того же файла, в частности, я хочу после обработки файл для чтения
read "60"
read "35"
read "24"
There are 60 nuts and 35 apples,
but only 24 pears.
Как я могу сделать это, используя один из текстовых манипуляций, доступных в *nix?
2 ответа
Решение
Вы можете написать сценарий ed для редактирования файла на месте:
{
echo 0a # insert text at the beginning of the file
grep -o '[0-9]\+' nums.txt | sed 's/.*/read "&"/'
echo ""
echo . # end insert mode
echo w # save
echo q # quit
} | ed nums.txt
Более кратко:
printf "%s\n" 0a "$(grep -o '[0-9]\+' nums.txt|sed 's/.*/read "&"/')" "" . w q | ed nums.txt
Один из способов сделать это:
egrep -o [0-9]+ input | sed -re 's/([0-9]+)/read "\1"/' > /tmp/foo
cat input >> /tmp/foo
mv /tmp/foo input