Некоторые USB-устройства требуют сброса Шины USB после размонтирования USB-устройства, который сделан в Windows по умолчанию, но не в Linux.
В наше время, почти все (помимо, очевидно, Монетного двора) использование настольных сред udisk
detach
возможность безопасно размонтироваться и затем "разъединить" USB-устройства.
Пока Монетный двор не делает этого, можно просто сделать udisks --detach /dev/sdXX
правильно разъединять Ваш MP3-плеер.
Простым решением awk
(без предварительной сортировки или каких-либо внешних инструментов) может быть:
awk '
FNR==1 { next }
NR==FNR { a[$1] = $2 ; next }
a[$1] != $2 { print $1, ":", $2, "does not match", a[$1] }
' file1 file2
Выход для ваших данных:
6 : strawberry does not match papaya
3 : orange does not match mango
1 : mango does not match apple
2 : papaya does not match orange
5 : straw does not match strawberry
Если у вас всегда одинаковое количество записей в каждом файле, и если каждый ID может быть объединен с одним и тем же в другом файле, вы можете сделать что-то подобное (это доказательство концепции, вы должны ее улучшить):
$ join -j1 <(sort -n file1.txt) <(sort -n file2.txt) |
awk '{if($2!=$3){k="==> BUG"}else {k=" ==> OK"}print $0,k}'
Id Value Value ==> OK
1 apple mango ==> BUG
2 orange papaya ==> BUG
3 mango orange ==> BUG
4 banana banana ==> OK
5 strawberry straw berry ==> BUG
6 papaya strawberry ==> BUG
Обратите внимание, что это не будет работать "как есть", если ID #4 не присутствует, например, во втором файле.
Вам следует удалить заголовки и оставить только строки BUG
.
$ join -j1 <(sort -n file1.txt | tail -n+2) <(sort -n file2.txt | tail -n+2) |
awk '($2!=$3){print $0," ==> BUG"}'