У меня есть file1 в указанном ниже формате:Использование AWK для сравнения запись файла, а также состояние
14-02-2017
one 01/02/2017
two 31/01/2017
three 14/02/2017
four 01/02/2017
five 03/02/2017
six 01/01/2017
И file2 в указанном ниже формате:
11-02-2017
one 01/01/2017
two 31/01/2017
three 14/02/2017
four 11/01/2017
Требование: Я хочу, чтобы скопировать, замените (или добавьте в случае необходимости) те файлы, упомянутые в файле file1, из какого-либо места в место, где находится файл2, дата которого (в coulmn 2) больше даты, указанной в файле 2. Гарантируется, что файл 2 не будет дата программы больше, чем дата файла (но может быть равна). Также должны быть скопированы записи файлов, отсутствующие в файле 2 (но представленные в файле 1).
Так что в этом случае файлы один, четыре, пять и шесть должны быть скопированы с некоторого места к месту file2, после выполнения сценария
AWK -F» '«NR == ПЗФ {с [$ 1] ++;} следующий; C [$ 1]> 0' $ файл2 $ file1> общий
# Файл 1, колонка 2 f1c2 = ($ (вырезать -f2 -s $ общий))
# Файл 2, столбец 2 f2c2 = ($ (cut -f2 -s $ file2))
for x in "${f1c2[@]}"
do
for y in "${f2c2[@]}"
do
if [[ $x >= $y ]]
then
//copy file pointed by field $1 in "common" to file2 path
break
fi
done
done
Я думал о том, как эффективно использовать awk для выполнения задачи сравнения, чтобы создать файл «общий». Так что файл «common» будет содержать последние файлы в файле 1, а также недостающие записи в файле 2. После этого мне просто нужно скопировать все файлы, упомянутые в файле «common», без каких-либо проблем.
Я был пытаюсь добавить какой-то блок внутри awk -F '' 'NR == FNR {c [$ 1] ++; next}; c [$ 1]> 0' $ file2 $ file1> общий, но я не мог понять, как для обращения к файлу 1 column2 и файлу 2 column2 для сравнения.
Обязательно ли awk? – mcoolive
не очень, но я думал о том, чтобы сохранить чистый вид, не имея большого количества строк кода. – user7083883
Правильно ли я понимаю, что даты в файле1 являются настоящими датами файла, а те, что в файле2, представляют собой более старую ситуацию и то, что вы делаете to является некоторой формой или зеркалированием или резервным копированием? Если это так, возможно, вам нужно всего лишь один вызов 'rsync' с соответствующими параметрами. Дайте нам знать ... – Dario