Итак, две вещи.
hostapd
). Вместо того, чтобы пытаться транслировать два разных SSID для передачи состояния логического значения, используйте в качестве индикатора наличие самого широковещания.
SSID = TheDoorIsOpen!
Когда Pi обнаруживает, что дверь открыта, он запускает службу hostapd, и сигнал виден/доступен/просматривается компьютерами поблизости. Когда дверь закрыта, Pi останавливает службу, сигнал 802.11 исчезает, а SSID не отображается как активная/доступная сеть.
Предполагая, что ввод разделен табуляцией -и вы хотите сохранить его таким, вы можете удалить номера версий из стабильных идентификаторов Ensembl с помощью
$ awk 'BEGIN { OFS=FS="\t" } { sub("\\..*", "", $1); print }' file
ENST00000456328 1657 1350.015 0 0
Это применяет замену к первой вкладке -поле с разделителями (только ), которая удаляет все после первой точки.
Аналогично сsed
:
$ sed 's/\.[^[:blank:]]*//' file
ENST00000456328 1657 1350.015 0 0
При этом удаляются все не -пустые символы после первой точки в каждой строке. Вы также можете использовать \.[[:digit:]]*
в качестве шаблона, который будет явно соответствовать цифрам, а не пробелам, отличным от -.
Если в ваших данных есть не -версионные идентификаторы Ensembl или идентификаторы из другой базы данных,тогда вы можете убедиться, что вы соответствуете идентификатору версии Ensembl ID, прежде чем изменять строку. С помощью awk
это можно сделать с помощью
$ awk 'BEGIN { OFS=FS="\t" } /^ENS[^[:blank:]]*\./ { sub("\\..*", "", $1) } { print }' file
ENST00000456328 1657 1350.015 0 0
print
теперь находится в отдельном блоке от блока, который выполняет модификацию первого поля. Это делается для того, чтобы печатались все строки, измененные или нет. Весь блок { print }
может быть заменен более коротким 1
, если у вас мало времени или места для ввода.
И сsed
:
$ sed '/^ENS[^[:blank:]]*\./s/\.[^[:blank:]]*//' file
ENST00000456328 1657 1350.015 0 0
Код sed
уже печатает все строки, независимо от того, изменены они или нет, поэтому никаких других модификаций не требуется (, тогда как в коде awk
вывод результата должен был быть немного оправдан по сравнению с первая awk
вариация ).
В последних двух вариантах мы сопоставляем версионный идентификатор ансамбля в начале строки с регулярным выражением ^ENS[^[:blank:]]*\.
, прежде чем пытаться внести какие-либо изменения.
Ни один из приведенных выше вариантов не заботится и не должен заботиться об остальных данных в строке. Каждая строка может содержать дополнительные поля, и они будут переданы без изменений.
Использование точки в качестве разделителя полей вдохновлено, но приведет к проблемам, так как больше данных в строке содержит точки.
Если вы хотите удалить все десятичные знаки вне зависимости от поля и иметь возможность обрабатывать потенциальные десятичные знаки в разных полях, вы можете использовать функцию gsub:
awk '{gsub(/\.[0-9]+ /, " ")}1'
Это найдет любое десятичное число, за которым следует единица, неограниченное количество чисел и пробел, а затем заменит их пробелом.