добавление слова в поле, общее для всех записей в файле - PullRequest
0 голосов
/ 30 сентября 2010

Я хочу добавить слово в поле 1 файла, разделенного пробелом, например

Мой файл, содержащий два поля:

apple:fruit:tree
orange:fruit:tree
mango:fruit:tree
brinjal:vegetable:plant
potato:vegetable:root

теперь я хочу добавить слово "семейство", разделенное пробелом, в поле 1.

Следовательно, результирующий файл должен выглядеть примерно так

apple family:fruit:tree
orange family:fruit:tree
mango family:fruit:tree
brinjal family:vegetable:plant
potato family:vegetable:root

Любые идеи по этому поводу будут оценены.

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 сентября 2010

Используйте awk

$ awk -F":" '{$1=$1" family"}1' OFS=":" file
apple family:fruit:tree
orange family:fruit:tree
mango family:fruit:tree
brinjal family:vegetable:plant
potato family:vegetable:root

Если вы хотите добавить во второе поле, просто наберите $2=$2" family".Это проще, чем создавать регулярные выражения, например, используя sed.

Теперь я могу перенаправить вас на руководство по awk , чтобы узнать о awk.Попробуйте сделать это сами в следующий раз.

2 голосов
/ 30 сентября 2010

Используйте can sed:

sed 's/:/ family:/' yourfile.txt

Это заменит любое : на family:, которое достигает желаемого результата.Возможно, вам придется настроить регулярное выражение, хотя, в случае * : также появляется в другом месте текста.

Обновление: Я не уверен, что вы хотите с Я хочудобавьте слово «активный» в поле 1 файла, разделенного пробелом , поскольку вы не приводите пример для этого.

Обновление 2:
Он заменит только первыйпоявление :.Однако если вы хотите заменить что-то посередине, вам просто нужно захватить данных перед разделителем:

sed 's/^\(.*:.*\):/\1 family:/' test.txt

В этом примере добавляется family перед третьим полем.\(.*:.*\) захватывает символы до и после первого : (то есть значения первого и второго поля).Следующие : будут заменены этими символами (\1 относится к первой группе захвата), за которыми следует family:.Остальная часть линии остается нетронутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...