Соберите цифры в начале файла - PullRequest
2 голосов
/ 03 июня 2011

У меня есть текстовый файл, который содержит некоторые цифры, например,

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 ]

2 голосов
/ 03 июня 2011

Вы можете написать сценарий 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
1 голос
/ 03 июня 2011

Один из способов сделать это:

egrep -o [0-9]+ input | sed -re 's/([0-9]+)/read "\1"/' > /tmp/foo
cat input >> /tmp/foo 
mv /tmp/foo input
...