cat input
aaa paul peter
bbb john mike
ccc paul mike
bbb paul john
И мой словарь Dict файла:Заменить строку в соответствии файл словаря в AWK
cat dict
aaa OOO
bbb 111
ccc 222
мне нужно найти строку формы input
и если матч первого столбца в файле dict
, печать второй столбец файл формы dict
к первому файл столбца input
. Я могу использовать sub
и gsub
, но у меня есть тысяча строк в файле dict
(с разными буквами).
cat output:
000 paul peter
111 john mike
222 paul mike
111 paul john
Благодарим за помощь.
Мое решение:
awk:
awk '{sub(/aaa/,"000",$1); sub(/bbb/,"111",$1); sub(/ccc/,"222",$1)1' input
UPDATE:
Если не найдено совпадение с input
в dict
, держать слово в первом столбце без изменений.
вход кошка
aaa paul peter
bbb john mike
ccc paul mike
bbb paul john
ddd paul peter
cat dict
aaa OOO
bbb 111
ccc 222
cat output:
000 paul peter
111 john mike
222 paul mike
111 paul john
ddd paul peter
Как 'input' имеет две записи для' bbb', разве это не уникально? – Inian
Ни одна запись в первом столбце не может повторяться много раз. Различия в других столбцах. – Geroge
@fedorqui Я поставил свою попытку. Но эта работа, если у меня есть только замена нескольких слов. И я хотел бы прочитать из файла dict. Я не уверен, могу ли я использовать awk .. – Geroge