/ usr / local (со страницы man ) является домом для всех локальных исполняемых файлов, файлов и т.д. зависит от работы ОС, и обычно это указывает на то, что рассматриваемое программное обеспечение было создано через систему портов или установлено менеджером пакетов. Например, и bash, и zsh
предоставляются необязательно и должны быть добавлены после простой установки, поэтому они живут там.
При соблюдении строгой иерархии программного обеспечения для конкретных ОС и другого программного обеспечения автоматизация обновлений и исправлений ОС становится проще. Таким образом, это не сильно отличается от использования каталога для различения пользовательских сценариев и настроек. Однако вам может не хватать того, что система портов на FreeBSD намного шире по своему охвату - это то, как вы настраиваете свою систему BSD, а не просто набор дополнительного программного обеспечения.
Лучше всего избегать установки непроверенного программного обеспечения для всех пользователей, которого еще нет в дереве портов. Если он проприетарный, он должен быть установлен в / usr / local /
. Если нет, почему бы не создать собственный порт ?
awk 'NR==FNR{A[NR]=$0;next}{if($0==A[FNR]){print $0 "is matching. it is ok"}else{print $0 "is not matching. please check"}}' file1.txt file2.txt
читаемый формат
awk 'NR==FNR{
A[NR]=$0;
next
}
{
if($0==A[FNR])
{
print $0 "is matching. it is ok"
}
else{
print $0 "is not matching. please check"
}
}' file1.txt file2.txt
С awk
:
awk 'NR==FNR{a[$1]=$2; next}; $2==a[$1] {print $1 " OK"; next} \
{print $1 " Not OK"}' f1.txt f2.txt
NR==FNR
верно только для первого файла, f1. txt
здесь; мы создаем массив a
с первым полем в качестве ключа и вторым полем в качестве значения, next
переходит к следующей записи, не двигаясь дальше вниз по условию
$2==a[$1]
проверяет, совпадает ли второе поле второго файла, f2. txt
совпадает со значениями ключевого первого поля массива a
, а затем печатает в нужном формате
Пример:
% cat f1.txt
abc 123
bcd 234
cde 345
% cat f2.txt
abc 123
bcd 223
cde 234
% awk 'NR==FNR{a[$1]=$2; next}; $2==a[$1] {print $1 " OK"; next} {print $1 " Not OK"}' f1.txt f2.txt
abc OK
bcd Not OK
cde Not OK
код @ Kamaraj был обновлен. Пожалуйста, замените строки:
print $0 "is matching. it is ok"
print $0 "is not matching. please check"
на
split($0,a,/ /); print a[1] " is matching. it is ok"
split($0,a,/ /);print a[1] " is not matching. please check"
или напечатайте $ 1 "совпадает. Это нормально" {{1 }} print $ 1 "не соответствует. Пожалуйста, проверьте"
Весь сценарий будет:
awk 'NR==FNR{
A[NR]=$0;
next
}
{
if($0==A[FNR])
{
split($0,a,/ /); print a[1] " is matching. it is ok"
}
else{
split($0,a,/ /);print a[1] " is not matching. please check"
}
}' file1.txt file2.txt
TIMES:
@heemayl real 0m0.159s user 0m0.000s { {1}} sys 0m0.046s
@Kamaraj real 0m0.102s user 0m0.000s sys 0m0.031s с разделением
@Kamaraj real 0m0.099s user 0m0.000s sys 0m0.062s с $ 1
Спасибо @Kamaraj.