На самом деле все зависит от версии date
, которую вы используете.
GNU date
ожидает, что дата ввода будет yy[y]*mmdd
как в20170713
(13 июля 2017 )или1000901123
(23 ноября 100090, да, год faaaar в будущем; -)). Он надежно печатает даты до 10 дикситов, не знаю, что он делает в последующие годы... год, когда 2140000000
работает, год 2150000000
не работает в моей системе.
Вы также можете использовать человеческие выражения, такие как date -d 'yesterday'
, опять же, не переносимые.
Используйте sed
, чтобы преобразовать дату в yyyymmdd
.
Для такого рода работы join
очень полезен. При использовании соединения имейте в виду, что оба файла сортируются по столбцам, которые идентичны в обоих файлах.
Вот решение
sort -o file1 file1 #sort and save content of file1
sort -o file2 file2 #sort and save content of file2
join file1 file2
Вы ошибаетесь.
Единственным свойством , которое находится в файловом дескрипторе -и которое можно изменить с помощью fcntl(F_SETFD)
, является FD_CLOEXEC
закрытие -флага -exec.
Все остальные свойства относятся либо к файловому объекту («описанию открытого файла» в жаргоне POSIX --, которое можно изменить с помощью fcntl(F_SETFL)
), либо к индексному узлу.
Установка флага отсутствия блокировки -с помощью fcntl(F_SETFL, | O_NONBLOCK)
или с помощью ioctl(FIONBIO)
повлияет на все файловые дескрипторы, которые ссылаются на этот открытый файл. Также нет способа сделать файл неблокирующим -только для чтения или записи.
Это далеко от идеала --вы также можете обратиться к этому вопросам и ответам на StackOverflow, особенно к ссылке на lkml обсуждение о неудачной попытке как-то исправить.
Обратите внимание, что обычные файлы в основном не -блокируют, --a poll(2)
или select(2)
на них возвращаются немедленно.
Если вас интересуют только сокеты, вы должны использовать send(2)
или recv(2)
с флагом MSG_DONTWAIT
вместо read(2)
или write(2)
. Вопреки тому, что вы говорите, дескриптор файла сокета может использоваться совместно между процессами и независимо от его семейства/протокола/параметров. И это также относится к прослушивающему сокету.
Использование приведенной ниже команды проверено и работает нормально
команда
правин@правин :~$awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2
выход
правин@правин :~$awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2
99373 dhdhdhdhd, 3838 dheueie,aaaa
133838000 rrtyusbjsjs,382 djdjdjsusu