Приветствую всех.
Есть текстовый файл со списком значений:
v1,v2,v3...
нужен тот же файл в следующем формате:
Имя1: v1
Имя2: v2
Имя3: v3
...
(имена полей задаются в ручную)
Помогите плз
shell script
Модераторы: /dev/random, Модераторы разделов
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: shell script
Код: Выделить всё
$ cat 1
v1
v2
v3
$ cat 2
Name1
Name2
Name3
$ join <(cat -n 2) <(cat -n 1) | sed 's/^[^ ]* //'
Name1 v1
Name2 v2
Name3 v3UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
sgfault
- Сообщения: 586
- Статус: -
Re: shell script
SLEDopit писал(а): ↑01.03.2012 10:45Код: Выделить всё
$ join <(cat -n 2) <(cat -n 1) | sed 's/^[^ ]* //'
Наверное, sed можно выкинуть:
Код: Выделить всё
$ join -o 1.2,2.2 <(cat -n 2) <(cat -n 1)А вот как избавиться от зависимости от bash-a (process substitution), не используя файлы..
UPD.
Хм, а здесь и правда нужен join?
Код: Выделить всё
$ paste 2 1Разве не то же самое?
-
kontur
- Сообщения: 23
- ОС: CentOS, Debian
Re: shell script
Код: Выделить всё
#!/bin/bash
hFile="./$1";
buffer=`cat $hFile | tr ',' '\n'`;
echo -n "" >$hFile"_tmp";
for arg in $buffer
do
mstr=`echo $arg | sed "s/ *$//" | sed "s/^ *//"`;
echo -n "name $mstr: "; read name
echo "$name: $mstr" >>$hFile"_tmp";
done
mv -f $hFile"_tmp" $hFile;использование ...
./script.sh tst.txt
name v1: n1
name v2: n2
name v3: n3
name v4: n4
результат:
n1: v1
n2: v2
n3: v3
n4: v4