Я хотел бы, чтобы вы дали мне больше информации, чтобы помочь вам, здесь я оставляю то, что мне нужно:
При подключении USB-модема к ПК откройте консоль и введите:dmesg | grep tty
. Не могли бы вы дать мне знать ответ? Это нужно для проверки того, куда был подключен модем, в настоящее время он у меня есть, и он подключается как /dev/ttyACM0
Вы уверены, что используете правильную скорость(baudio )? Эта проблема кажется типичной для неудачно выбранной скорости .
Проверил, что при использовании миникома вместо входа в программу и последующей настройки параметров предпочтительнее обращаться напрямую с уже предложенными параметрами, например :minicom -D /dev/ttyACM0 -b 9600
Является -D для «устройство » и -b для «скорость » в (baudios)
Игнорируя номера строк (, которые, как я полагаю, существуют только для читателей вопроса ), вы, похоже, в основном хотите объединить диапазоны, которые лежат спиной к спине, т.е. удалить любуюend=X
start=Y
пару где X
и Y
— одно и то же число.
$ tr '\n' '\t' < file | sed 's/end=\([[:digit:].]*\)[[:blank:]]start=\1[[:blank:]]//g' | tr '\t' '\n'
start=0.1
end=2.5
start=8.7
end=60.1
start=66.2
end=78.2
Это сначала заменяет каждую новую строку во входных данных табуляцией, а затем использует sed
для удаления каждой пары end=
start=
, которые имеют одинаковый номер после знака =
. После объединения диапазонов вкладки снова заменяются символами новой строки.
С awk
двойным разбором файла и печатью только строк с уникальным последним полем.
$ awk -F= 'p==1{seen[$NF]++} p==2 && seen[$NF]==1' p=1 file p=2 file
start=0.1
end=2.5
start=8.7
end=60.1
start=66.2
end=78.2
Или то же самое, используя классический awk
идиоматический синтаксис(FNR==NR
означает 'при чтении первого файла', также next
необходимо)
awk -F= 'FNR==NR {seen[$NF]++; next} seen[$NF]==1' file file
С реализацией GNU uniq
и при условии, что ввод не содержит символов TAB, вы могли бы сделать:
<your-file tr = '\t' | uniq -uf1 | tr '\t' =
for i in `awk -F "=" '{if(!seen[$NF]++)print $NF}' file`; do p=`awk -F "=" -v i="$i" '$NF == i{print $0}' file|wc -l`;if [[ $p == 1 ]]; then awk -F "=" -v i="$i" '$NF == i{print $0}' file; fi; done
выход
start=0.1
end=2.5
start=8.7
end=60.1
start=66.2
end=78.2
GNU sed :поддерживает 2 -строчного шаблона. Полностью удалите пространство шаблона, если совпадение найдено, в противном случае распечатайте его целиком.
sed -Ee '
/^end=/!b
$!N
/=(.*)\nstart=\1$/d
' file
perl -aF= -pe '
next if eof || !/^end=/;
($_.= <>) =~ /=(\S+)$/;
s/.*//s if $1 == $F[1];
' file
awk -F '=' '
BEGIN { OFS = ORS }
END { if (f) print l }
/^end=/ && !f {
l = $0; t = $2
f = 1; next
}
/^start=/ && f {
if ($2+0 != t) print l, $0
f = 0
next
}1
' file
Выход:
start=0.1
end=2.5
start=8.7
end=60.1
start=66.2
end=78.2