Необходимо в файле file в строке содержащей вхождение free заменить второе поле. Пишу:
awk "/free/ {sub(/$2/,\"some text\");print}" file
Но some text добавляется в начало строки, втрое поле остается.

Как правильно?
заменить foo на bar в втором поле - sub("foo", "bar", $2)Termitnik писал(а):awk "/free/ {sub(/$2/,\"some text\");print}" file
Содержимое втрого поля может варьироваться, мне нужно заменить его целиком.Гость писал(а):заменить foo на bar в втором поле - sub("foo", "bar", $2)Termitnik писал(а):awk "/free/ {sub(/$2/,\"some text\");print}" file
Есть:zg писал(а):образец дай, чего есть, чего надо, а там видно будет, чего и как заменять
Код: Выделить всё
zg# awk '{if ($1=="vlan31") $2="YYY.YYY.YYY.YYY/YY"; print}' 1.txt
vlan31 YYY.YYY.YYY.YYY/YY free
inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX
zg# cat 1.txt
vlan31 ХХХ.ХХХ.ХХХ.ХХХ/ХХ free
inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX
zg#
Код: Выделить всё
zg# awk '{if (match($0, "free")) $2="YYY.YYY.YYY.YYY/YY"; print}' 1.txt
vlan31 YYY.YYY.YYY.YYY/YY free
inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX
zg#
Код: Выделить всё
030209 1156 00011 9 9 717 8962XXXXABCD 702 05 35 702 702 4 0 2
030209 1156 00025 9 333 06 702 702 0 0 2
030209 1156 00019 7 9 714 ZZZZZZZ 333 11 333 4 0 1
030209 1156 00038 9 9 717 8926XXXXXXXX ZZZZZZZ 26 15 714 ZZZZZZZ 4 0 2
Код: Выделить всё
awk '{match($7, "8962XXXXABCD") $8="030"; print}' 0903*
awk '{match($7, "8962XXXXABCD") $12="030"; print}' 0903*
Код: Выделить всё
awk '{if ($7=="8962XXXXABCD") $8="030"; print}' 0903*
awk '{if ($7=="8962XXXXABCD") $12="030"; print}' 0903*
-))) и не будет, пока вывод не завернёшь куда надоzrad писал(а):Но после запуска скрипта никаких изменений в файлах не наблюдается.
через временные файлыzrad писал(а):А есть способ сделать так, чтобы изменения происходили во входных файлах?
Код: Выделить всё
cat some.file | обработка > tmp.file
mv tmp.file some.file
Код: Выделить всё
Apr 01 00:00:00 [чего-то там 1]
Apr 9 08:50:48 [чего-то там 8]
Apr 8 09:20:37 [чего-то там 3]
Apr 8 22:22:40 [чего-то там 4]
Apr 22 22:26:41 [чего-то там 225]
Apr 18 22:26:41 [чего-то там 25]
Apr 8 22:26:41 [чего-то там 5]
Apr 8 22:27:56 [чего-то там 6]
Apr 8 23:27:27 [чего-то там 7]
Apr 3 08:59:28 [чего-то там 2]
Код: Выделить всё
08-Apr-2017 22:21:51 [чего-то там 10]
08-Apr-2017 22:27:57 [чего-то там 16]
08-Apr-2017 22:23:53 [чего-то там 12]
08-Apr-2017 22:24:54 [чего-то там 13]
18-Apr-2017 22:24:56 [чего-то там 2213]
18-Apr-2017 22:24:54 [чего-то там 213]
19-Apr-2017 22:24:54 [чего-то там 213]
08-Apr-2017 22:25:55 [чего-то там 14]
08-Apr-2017 22:26:56 [чего-то там 15]
08-Apr-2017 22:22:52 [чего-то там 11]
Код: Выделить всё
Apr 01 00:00:00 [чего-то там 1]
Apr 18 22:26:41 [чего-то там 25]
Apr 22 22:26:41 [чего-то там 225]
Apr 3 08:59:28 [чего-то там 2]
Apr 8 09:20:37 [чего-то там 3]
Apr 8 22:22:40 [чего-то там 4]
Apr 8 22:26:41 [чего-то там 5]
Apr 8 22:27:56 [чего-то там 6]
Apr 8 23:27:27 [чего-то там 7]
Apr 9 08:50:48 [чего-то там 8]
08-Apr-2017 22:21:51 [чего-то там 10]
08-Apr-2017 22:22:52 [чего-то там 11]
08-Apr-2017 22:23:53 [чего-то там 12]
08-Apr-2017 22:24:54 [чего-то там 13]
08-Apr-2017 22:25:55 [чего-то там 14]
08-Apr-2017 22:26:56 [чего-то там 15]
08-Apr-2017 22:27:57 [чего-то там 16]
18-Apr-2017 22:24:54 [чего-то там 213]
18-Apr-2017 22:24:56 [чего-то там 2213]
19-Apr-2017 22:24:54 [чего-то там 213]
Код: Выделить всё
Apr 01 00:00:00 [чего-то там 1]
Apr 3 08:59:28 [чего-то там 2]
Apr 8 09:20:37 [чего-то там 3]
Apr 8 22:22:40 [чего-то там 4]
Apr 8 22:26:41 [чего-то там 5]
Apr 8 22:27:56 [чего-то там 6]
Apr 8 23:27:27 [чего-то там 7]
Apr 9 08:50:48 [чего-то там 8]
Apr 18 22:26:41 [чего-то там 25]
08-Apr-2017 22:21:51 [чего-то там 10]
08-Apr-2017 22:22:52 [чего-то там 11]
08-Apr-2017 22:23:53 [чего-то там 12]
08-Apr-2017 22:24:54 [чего-то там 13]
08-Apr-2017 22:25:55 [чего-то там 14]
08-Apr-2017 22:26:56 [чего-то там 15]
08-Apr-2017 22:27:57 [чего-то там 16]
18-Apr-2017 22:24:54 [чего-то там 213]
18-Apr-2017 22:24:56 [чего-то там 2213]
19-Apr-2017 22:24:54 [чего-то там 213]
Apr 22 22:26:41 [чего-то там 225]
Код: Выделить всё
# ( ( cat file3 | awk '{ print $2 "-" $1 "-2017 " $3 " - " $0}' | sort ) && ( cat file4 | sort ) ) | awk '{first=substr($0,1,1);gsub("0","",first);end=substr($0,2);print first end}' | sort -g
Код: Выделить всё
1-Apr-2017 00:00:00 - Apr 01 00:00:00 [чего-то там 1]
3-Apr-2017 08:59:28 - Apr 3 08:59:28 [чего-то там 2]
8-Apr-2017 09:20:37 - Apr 8 09:20:37 [чего-то там 3]
8-Apr-2017 22:21:51 [чего-то там 10]
8-Apr-2017 22:22:40 - Apr 8 22:22:40 [чего-то там 4]
8-Apr-2017 22:22:52 [чего-то там 11]
8-Apr-2017 22:23:53 [чего-то там 12]
8-Apr-2017 22:24:54 [чего-то там 13]
8-Apr-2017 22:25:55 [чего-то там 14]
8-Apr-2017 22:26:41 - Apr 8 22:26:41 [чего-то там 5]
8-Apr-2017 22:26:56 [чего-то там 15]
8-Apr-2017 22:27:56 - Apr 8 22:27:56 [чего-то там 6]
8-Apr-2017 22:27:57 [чего-то там 16]
8-Apr-2017 23:27:27 - Apr 8 23:27:27 [чего-то там 7]
9-Apr-2017 08:50:48 - Apr 9 08:50:48 [чего-то там 8]
18-Apr-2017 22:24:54 [чего-то там 213]
18-Apr-2017 22:24:56 [чего-то там 2213]
18-Apr-2017 22:26:41 - Apr 18 22:26:41 [чего-то там 25]
19-Apr-2017 22:24:54 [чего-то там 213]
22-Apr-2017 22:26:41 - Apr 22 22:26:41 [чего-то там 225]
Месяц прописью из лога.Alex Keda писал(а):таки год в начало, месяц, потом дату
тока месяц должен быть числовой
и сортировать по человечески ...
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 307"
odlkmax_23679_1509170974.418754, 307
odlkmax_17245_1509210784.571775, 307
odlkmax_17332_1509210793.818450, 307
odlkmax_29899_1509221316.862000, 307
odlkmax_3904_1509226874.866412, 307
odlkmax_31238_1508403581.170446, 655, 307
odlkmax_5509_1509256589.421416, 307
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 30"
odlkmax_23679_1509170974.418754, 307
odlkmin_29851_1508380755.414015, 30
odlkmax_17245_1509210784.571775, 307
odlkmax_17332_1509210793.818450, 307
odlkmax_29899_1509221316.862000, 307
odlkmax_3904_1509226874.866412, 307
odlkmax_31238_1508403581.170446, 655, 307
odlkmax_5509_1509256589.421416, 307
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 3"
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 307" | awk '$2 == 307,$3 == 307'
odlkmax_23679_1509170974.418754, 307
odlkmax_17245_1509210784.571775, 307
odlkmax_17332_1509210793.818450, 307
odlkmax_29899_1509221316.862000, 307
odlkmax_3904_1509226874.866412, 307
odlkmax_31238_1508403581.170446, 655, 307
odlkmax_5509_1509256589.421416, 307
Код: Выделить всё
", 655, 307",
", 655, 307, 3030"
", 655, 455, 725, 836, 307"
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 307" | awk '$2 == 307,$3 == 307'
cat 2017-10-31_full.txt | grep ", 307" | awk '$2 == 307,$3 == 307,$4 == 307'
cat 2017-10-31_full.txt | grep ", 307" | awk '$2 == 307,$3 == 307,$4 == 307,$5 == 307'
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 307" | awk 'match($0,/307/) {START2 = index($0,"307");print
307
307
307
307
307
307
307
Код: Выделить всё
cat 2017-10-31_full.txt | awk '{for(i=1;i<=NF;i++){ if($i=="307"){print $i} } }'
307
307
307
307
307
307
307
Код: Выделить всё
cat 2017-10-31_full.txt | awk '{for(i=1;i<=NF;i++){ if($i=="30"){print $i} } }'
30
Код: Выделить всё
cat 2017-10-31_full.txt | awk '{for(i=1;i<=NF;i++){ if($i=="3"){print $i} } }'
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 307" | awk '{for(i=1;i<=NF;i++){ if($i=="307"){print $i} } }'
307
307
307
307
307
307
307
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 30" | awk '{for(i=1;i<=NF;i++){ if($i=="30"){print $i} } }'
30
Код: Выделить всё
cat 2017-10-31_full.txt | grep ", 3" | awk '{for(i=1;i<=NF;i++){ if($i=="3"){print $i} } }'
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | sed -n '/.*7.*/p'
odlk3_7515_1498741105.011651, 7, 270
odlk3_31868_1498237437.342564, 35, 7
odlk3_19163_1498768687.158794, 717
Код: Выделить всё
odlk3_7515_1498741105.011651, 7, 270
odlk3_31868_1498237437.342564, 35, 7
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7"
odlk3_7515_1498741105.011651, 7, 270
odlk3_31868_1498237437.342564, 35, 7
odlk3_19163_1498768687.158794, 483, 717
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | awk '{for(i=1;i<=NF;i++){if($i=="7") {print $1} } }'
odlk3_31868_1498237437.342564,
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | awk '{for(i=1;i<=NF;i++){if($i=="7") {print $2} } }'
35,
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | awk '{for(i=1;i<=NF;i++){if($i=="7") {print $3} } }'
7
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | awk '{for(i=1;i<=NF;i++){if($i=="7") {print $i} } }'
7
Код: Выделить всё
cat 2017-06-30_full.txt | grep ", 7" | awk '{for(i=1;i<=NF;i++){if($i=="7" || $i=="7,") {print $i} } }'
7,
7
Код: Выделить всё
count=`cat $file | grep ", $i" | awk -v Key="$i" '{for(k=1;k<=NF;k++){ if($k==Key || $k=="Key,"){print $k} } }' | wc -l|awk '{print $1}'`