Bash: анализ 2 текстовых файлов, выборка по похожим значениям и вывод полученных значений в файл [SOLVED]
gebs 11 июля, 2010 - 15:28
Здравствуйте. Хочу автомaтизировать связки ip+mac в сети. Что имеется:
Первый файл значения вида:
1 строка: 1X 1Y 1Z
2 строка: 2X 2Y 2Z
3 строка: 3X 3Y 3Z
.............
9 строка: 9X 9Y 9Z
Второй файл значения вида:
1 строка: 2A 2Y
2 строка: 1A 1Y
3 строка: 3A 2Y
.............
8 строка: 8A 8Y
При этом значения 1Y из первого файла = 1Y из второго файла.
Нужно проанализировать оба файла, найти одинаковые значения, создать третий файл вида:
1 строка: 1X 1Y 1Z 1A
2 строка: 2X 2Y 2Z 2A
Возможно ли это сделать средствами bash, если да то хотелось бы посмотреть примеры. Спасибо
»
- Для комментирования войдите или зарегистрируйтесь

а вы в примере с форматом
а вы в примере с форматом второго файла не напутали?
если второй файл все таки
если второй файл все таки похож на первый, то можно например так:
john_doe@jd ~ $ cat file1 1X 1Y 1Z 2X 2Y 2Z 3X 3Y 3Z 3X 3Y 3Z 4X 4Y 4Z 5X 5Y 5Z 6X 6Y 6Z 7X 7Y 7Z 8X 8Y 8Z 9X 9Y 9Z john_doe@jd ~ $ john_doe@jd ~ $ cat file2 2A 2Y 1A 1Y 3A 3Y 3A 3Y 4A 4Y 5A 5Y 6A 6Y 7A 7Y 8A 8Y john_doe@jd ~ $ cat test.sh #!/bin/bash while read s1 ; do X1=$(echo $s1 | awk '{print $2}'); while read s2; do if echo $s2 | grep -q "$X1" then echo $s1 $s2 | awk '{print $1" "$2" "$3" "$4}'; fi done < file2 done < file1 john_doe@jd ~ $ ./test.sh 1X 1Y 1Z 1A 2X 2Y 2Z 2A 3X 3Y 3Z 3A 3X 3Y 3Z 3A 3X 3Y 3Z 3A 3X 3Y 3Z 3A 4X 4Y 4Z 4A 5X 5Y 5Z 5A 6X 6Y 6Z 6A 7X 7Y 7Z 7A 8X 8Y 8Z 8A john_doe@jd ~ $если нужен более чистый баш,
если нужен более чистый баш, то вместо awk можно в принципе и cut приспособить
Спасибо коллеги, вот этот
#!/bin/bash while read s1 ; do X1=$(echo $s1 | awk '{print $2}'); while read s2; do if echo $s2 | grep -q "$X1" then echo $s1 $s2 | awk '{print $1" "$2" "$3" "$4}'; fi done < file2 done < file1Спасибо коллеги, вот этот вариант подошёл.