У меня возникли проблемы с редактированием текстового файла, который я получил из-за некоторых отсутствующих значений в определенном столбце для некоторых строк. Например, вот как выглядит файл (в основном):
ID10 dad prbM ATGD
ID11 mom prbF CDSF
ID12 mom CGDS
ID13 dad prbF FSDD
ID14 mom FDSF
Как вы видите, иногда prb
не предоставляется для каждой записи. Я обнаружил, что когда запись отсутствует, есть два разделителя табуляции. Есть ли способ вставить строку между вкладками? Например, что-то вроде этого:
ID10 dad prbM ATGD
ID11 mom prbF CDSF
ID12 mom none CGDS
ID13 dad prbF FSDD
ID14 mom none FDSF
решение1
С awk
, предполагая, что ваши поля фактически разделены табуляциями:
awk -F '\t' -v OFS='\t' '$3 == ""{$3 = "none"};1' input.txt
Этот:
- Устанавливает разделитель полей ввода на один символ табуляции (
-F '\t'
) - Устанавливает разделитель выходных полей на табуляцию (
-v OFS='\t'
) - Проверяет, является ли третье поле пустым (
$3 == ""
), и если да, устанавливает его в строку"none"
- И всегда печатает строку (
1
).