код @ 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.
В Linux вы можете сделать это без связывания -монтирования и привилегий root, просто имея процесс, который либо chdir, либо открывает базовый каталог --, прежде чем он будет скрыт монтированием --, а затем просто задерживается; другие процессы могут затем получить доступ к каталогу через /proc/<pid>/cwd
или /proc/<pid>/fd/<dir_fd>
.
Пример с chdir:
# mkdir dir; touch dir/file # create a sample dir and file
# (cd dir; while sleep 3600; do :; done) & # start a bg process with its pwd being dir
[1] 3734
# mount -t tmpfs tmpfs dir # mount a tmpfs over dir which will hide its previous content
# ls dir
# ls /proc/3734/cwd # you can still access the old dir via /proc/<pid>/cwd
file
Пример с открытием каталога:
# mkdir -p dir1; touch dir1/file
# exec 9<dir1
# mount -t tmpfs tmpfs dir1
# ls dir1
# ls /proc/self/fd/9
file
Если вы хотите сделать это постфактум с уже смонтированным каталогом, вы можете создать частное пространство имен и размонтировать этот каталог внутри пространства имен.
В этом случае вы также можете получить к нему доступ извне через /proc/<pid>/root/<path_to_dir>
, без необходимости его открытия или перехода к нему:
mkdir -p dir; touch dir/file
mount -t tmpfs tmpfs dir
unshare -m sh -c 'umount dir; while sleep 1000; do :; done' &
sleep.1
ls "/proc/$!/root/$PWD/dir" # will show 'file'
Вы можете прочитать больше о дополнительной магии /proc/<pid>/root
на справочной странице proc(5)
. Обратите внимание, что вы можете сохранить пространство имен процесса даже после завершения процесса, смонтировав его /proc/<pid>/ns/mnt
в другом месте при помощи bind -; затем вы можете снова -ввести его с помощью nsenter(1)
.
Примечание :для тех, кто может пропустить комментарий.
sudo mount --bind original_location backup_link
работает, локации под oldlocation
могут быть доступны после того, как что-то на них установлено и затенено.
Но
sudo mount --bind
, как я понял, нужно запускать после mount something original_location
, а не заранее. sudo mount --bind parent_of_original_location backup_link