Показать полную графическую версию : [решено] awk замена текста во втором столбце
shmel_sv@vk
13-09-2015, 14:21
доброго времени суток
нигде не могу найти решение, но думаю в AWK 'nj djpvj;yj
как можно заменить текст_1 на текст_2 в втором столбце и вывести только те строки которые заменены?
спасибо
shmel_sv@vk
13-09-2015, 14:53
пробую вот это (без поиска во втором столбце)
awk "{if(gsub(/"2008-09-19"/,"2008.09.17")){print}}" nfo.txt>1.txt
выходит ахинея
меняет значения на 2008.090.17
awk "{if(gsub(/"2008-09-19"/,"2008-09-17")){print}}" nfo.txt>1.txt
меняет значения на 1982 (тоесть минусует цыфры)
shmel_sv@vk
13-09-2015, 15:15
разобрался
awk "{if(sub(/2008-09-19/,\"2008-09-17\")){print}}"
shmel_sv@vk
13-09-2015, 16:26
блин. все же вопрос на счет изменений только во втором столбце я ж не решил
Коллега, завязывайте чатиться сам с собой. Лучше упакуйте Ваш «nfo.txt» в архив, приложите к сообщению или выложите на RGhost. На всякий случай, поясните, что есть «второй столбец». Укажите, что именно и по каким критериям ищем, на что меняем.
shmel_sv@vk
13-09-2015, 23:26
часов 8 на поиски ответа и я нашел
gawk "{print $1, gensub(/(2008)/,\"\\1 ADDED\", \"g\", $2)}" "OFS=\t" "FS=\t" nfo.txt>z1.txt
но. как печатать только строки которые совпали типа if(gensub)
простоя не разбираюсь в awk
Foreigner
14-09-2015, 02:36
А что за файл? Приведите пример строки, иначе никак.
shmel_sv@vk
14-09-2015, 12:19
вот строки в файле. жирным выделено то, что оно находит. именно эти строки мне и нужны.
сейчас оно пишет все строки и меняет значения во второй колонке как мне надо
я в принципе понял что потом могу отфильтровать через sed
много_разных_букв_и_какаято_инфа_2007_или_2008_или_еще_чтото 2008-12-4
много_разных_букв_и_какаято_инфа_2007_или_2008_или_еще_чтото 2008-12-4
много_разных_букв_и_какаято_инфа_2007_или_2008_или_еще_чтото 2006-12-4
много_разных_букв_и_какаято_инфа_2007_или_2001_или_еще_чтото 2007-12-4
ps. не могу правильно вставить код. но разделитель табуляция
Foreigner
14-09-2015, 13:37
Только год?
sed -rn "s/.+\s(2008)-.*/\1/p" nfo.txt > 1.txt
Или вторую колонку?
sed -rn "s/.+\s(2008.+)/\1/p" nfo.txt > 1.txt
shmel_sv@vk
14-09-2015, 14:16
вторую колонку:)
спасибо!!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.