Как я могу заменить слово в моем файле для счетчика:

{"word":"resolucion","count":40723},{"word":"general","count":20976},
{"word":"","count":13334},{"word":"publica","count":12379},
{"word":"direccion","count":11958},{"word":"secretaria","count":9907},
{"word":"al","count":9324},{"word":"orden","count":8604},
{"word":"anuncia","count":8589},{"word":"concurso","count":6953},
{"word":"diciembre","count":6893},{"word":"adjudicacion","count":6762},
{"word":"estado","count":6154},{"word":"procedimiento","count":5694},
{"word":"julio","count":5598},{"word":"marzo","count":5440},
{"word":"-","count":5437},{"word":"convocatoria","count":5319},
{"word":"ayuntamiento","count":5259},{"word":"publico","count":5203},
{"word":"junio","count":4995},{"word":"convenio","count":4925},
{"word":"real","count":4916},{"word":"febrero","count":4896},
{"word":"proyecto","count":4826},{"word":"abierto","count":4782},

Например:

{"0":"resolucion","count":40723},{"1":"general","count":20976},
{"2":"","count":13334}, {"3":"publica","count":12379},
{"4":"direccion","count":11958},{"5":"secretaria","count":9907},
{"6":"al","count":9324},{"7":"orden","count":8604},
{"8":"anuncia","count":8589},

и так далее.

3 ответа3

0

Вот одно из возможных решений с нашими друзьями по grep и sed . Это хорошо для небольших файлов, в противном случае perl (или awk?) Решение будет гораздо более производительным. Это синтаксис bash :

i=1
maxnum=$(grep -o '\<word\>' datafile | wc -l)
while (( i <= maxnum )); do
  sed -i "s/word/$i/" datafile
  (( i++ ))
done

grep -o подсчитывает общее количество слов в datafile . Это от Гленна . Единственный трюк в том, что sed не работает глобально, поэтому заменяет только первую подходящую строку. Вот почему этот код такой медленный, так как он вызывает время sed maxnum для всего файла данных.

Имейте в виду, что sed -i изменяет ваш исходный файл данных, поэтому сначала сделайте копию.

0

Если это файл JSON, вы можете использовать некоторый язык сценариев для его изменения. Например, если у вас установлен NodeJS, вы можете запустить следующую программу:

var data = require('./data.json')

console.log(data)

data.forEach(function (obj, idx) { obj[idx] = obj['word']; delete obj.word; });

console.log(data)

Я предполагаю , что файл с именем «data.json» , и что она действует синтаксис JSON (ваш не совсем так: вы упускаете обертку [ и у вас есть , в конце концов.

0

Это должно быть довольно быстро.

perl -0 -ne 's/"word"/q{"} . $x++ . q{"}/ge; print;' INFILE > OUTFILE

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .