Это продолжение моей предыдущей должности string replacement using awk command, который не 100% полностью решен .. Для того, чтобы было понятнее ..замена строки команду, используя AWK
(исходный файл и код, я использую находятся в нижней части пост)
требование 1
Если у меня нет, если поиск данных (например, для «u_no» не в справочном файле, текущее решение выводит пустое поле.
aaaa
uid=1a1a
pwd=1b1b
u_no=
Я хочу, чтобы выбрать значение из исходного файла, а не ..
aaaa
uid=1a1a
pwd=1b1b
u_no=12345
требование 2
Если данные в исходном файле или отпечатком замешан, он должен еще сделайте замену должным образом.
То есть, когда файл исх изменяется следующим образом:
block,parameter,value
aaaa,uid,1a1a
aaaa,pwd,1b1b
bbbb,uid,2a2a
zzzz,pwd,9b9b
zzzz,uid,9a9a
bbbb,pwd,2b2b
Для этого, я получаю
aaaa
uid=1a1a
pwd=1b1b
u_no=
bbbb
uid=2a2a
pwd=9b9b
zzzz
uid=9a9a
pwd=2b2b
** я должен получить **
aaaa
uid=1a1a
pwd=1b1b
u_no=12345 #points to my req 1
bbbb
uid=2a2a
pwd=2b2b
zzzz
uid=9a9a
pwd=9b9b
Я хочу, чтобы поиск и замена выполнялись на основе блоков aaaa,bbbb,zzzz,etc..
Не последовательно. (Например, здесь значение pwd
для bbbb
должно быть 2b2b
, а не 9b9b
).
исходный файл (src.txt)
aaaa
uid=xxxx
pwd=nnnn
u_no=12345
bbbb
uid=yyyy
pwd=eeee
zzzz
uid=yyyy
pwd=eeee
Примечание uid
и pwd
значение bbbb
такое же, как и в zzzz
src
файле.
ссылка на файл (ref.txt)
block,parameter,value
aaaa,uid,1a1a
aaaa,pwd,1b1b
bbbb,uid,2a2a
zzzz,pwd,9b9b
zzzz,uid,9a9a
bbbb,pwd,2b2b
Примечание: Порядок записей в файле реф может также изменить, как я упоминалось в требовании 2. Значение для поиска uid
и pwd
для bbbb
является отличается от zzzz
. Но мне нужен результат следующим образом: -
Требуемый файл вывода (src_out.TXT) (в том числе требования 1 и 2)
aaaa
uid=1a1a
pwd=1b1b
u_no=12345
bbbb
uid=2a2a
pwd=2b2b
zzzz
uid=9a9a
pwd=9b9b
Код
$ cat tst.awk
BEGIN { FS = "[,=]+" }
NR==FNR {
if (NR>1) {
map[$1,$2] = $3
}
next
}
{
if (NF==1) {
key = $0
}
else {
$0 = $1 "=" map[key,tolower($1)]
}
print
}
$ awk -f tst.awk ref.txt src.txt
Это прекрасно работает для моего первоначального ожидания, но requirement 1
и requirement 2
, которые я указал здесь теперь добавлены и я нужно решение для них.
Что вы пытались решить эту проблему? – Jotne
Измените свой вопрос, чтобы сделать его более ясным и более ясным, в чем разница между этим и вашими предыдущими вопросами (http://stackoverflow.com/q/28963149/1745001 и http://stackoverflow.com/q/28849774/1745001), так как я вообще не вижу никакой разницы, а также расскажу, каким образом предыдущее решение (http://stackoverflow.com/a/28965212/1745001) не работает для ваших новых требований (независимо от того, что они есть) - показать результат, который он производит для сравнения с желаемым выводом. Вам нужно приложить больше усилий и усилий, чтобы задать вопрос, чтобы мы могли вам помочь. –
Возможный дубликат [Поиск заменить строку в файле на основе столбца в другом файле] (http://stackoverflow.com/questions/20327179/search-replace-string-in-a-file-based-on-column-in -other-file) – NeronLeVelu