minicom
отсутствует в списке инструментов для мониторинга последовательных портов. Используйте его, например, для прослушивания устройства arduino:
minicom --device /dev/ttyACM0 --baud 9600
, если infile
равно:
0 -1 0.000532 -0.00026 0.000465 etc...
0 0.000294 1 -0.000102 -0.1146 etc...
0 -0.000134 0.0000967 1 -0.9972 etc...
delete
- это номер столбца, который вы собираетесь удалить из своего infile
, например:
2 4 6
с awk
, вы можете сделать что-то вроде:
awk 'NR==FNR { split($0, to_delete); next }
# split 'delete' file into an array called to_delete on default FS (white-space)
{ for (col in to_delete) $to_delete[col]=""; print }' delete infile
# delete the columns from 'infile' that match with $column getting from array
, что даст вам вывод со столбцами 2, 4 и 6, удаленными из файла.
0 0.000532 0.000465
0 1 -0.1146
0 0.0000967 -0.9972
Похоже, это то, что вы ищете:
awk '
NR==FNR { split($0,del); next }
{
out = sep = ""
for (i=1; i<=NF; i++) {
if ( !(i in del) ) {
out = out sep $i
sep = OFS
}
}
print out
}
' delete.txt mat.txt
Предполагая, что файл delete.txt состоит только из одной строки, мы можем получить нужные столбцы, используя следующий код:
$ perl -psale '$. == 1 and
@indices2P = grep { my $c=$_+1; $d !~ /\b$c\b/ } 0.. $#F;
$_ = "@F[@indices2P]";
' -- -d="$(< delete.txt)" mat.txt
Результаты:
0 0.000532 0.000465
0 1 -0.1146
0 0.0000967 -0.9972
Пояснение:
Сохраните удаляемые столбцы в скалярной переменной $d
и в самой первой строке чтения файла mat.txt
вычислите индексы столбцов, которые необходимо распечатать.
Затем применяйте только эти индексы при доступе к массиву @F
для печати.
$ < delete.txt \
tr -s ' \t' '\n\n' | sort -nru |
sed -e 's|.*|s/\\s*\\S+//&|' |
sed -Ef - mat.txt
Результаты:
0 0.000532 0.000465
0 1 -0.1146
0 0.0000967 -0.9972
Пояснение:
Используя GNU sed с включенным расширенным режимом регулярных выражений, мы сначала создаем код sed, который при применении к файлу mat.txt даст нам желаемый результат.
Предположения:
o The file delete.txt comprises only positive integers and max value < 512