Извлечение данных на основе определенного шаблона в один столбец

Vaya a Configuración del sistema KDE , luego elija Estilo de aplicación , luego elija Estilo de aplicación GNOME (GTK). Para Select a GTK2 Themey Select a GTK3 Themeelija HighContrast, luego haga clic en Apply.

0
12.06.2019, 15:31
4 ответа

Awk по умолчанию ожидает поля, разделенные пробелами -если ваш файл разделен запятыми -, вам нужно будет установить разделитель полей соответствующим образом, либо с помощью параметра командной строки -F, либо путем установки внутреннего FSавк переменная.

Если вы хотите, чтобы вывод также был разделен запятыми, вам нужно установить OFS.

Пр.

$ awk -F, 'BEGIN{OFS=FS} $3 ~ /^MT-/ {print $1, $2, $3, $4}' final_matrix.csv
AAACCTGCAAGCGAGT-1,ENSG00000002549,MT-CO3,2
AAACCTGCAAGCGAGT-1,ENSG00000003402,MT-CYB,2
2
28.01.2020, 02:15

Идея правильная, но вы забыли сказать awk, как разграничить элементы столбца, чтобы $1отличался от $2до остальных столбцов. Прямо сейчас он просто ищет один белый пробел -, чтобы разграничить ваш текст, но в итоге нашел всю строку на $1и вообще не нашел $3. Таким образом, $3 ~..будет просто ложным условием, в результате чего ни одна из строк не будет напечатана.

awk -v FS=, -v OFS=, '$3 ~/^MT-/ {print $1, $2, $3, $4}' final_matrix.csv
1
28.01.2020, 02:15

Все ответы верны, кроме того, вы можете напечатать всю строку.

И нет необходимости в разборе полей.

awk  '/,MT-/{print}' final_matrix.csv
2
28.01.2020, 02:15

Учитывая ваш опубликованный пример, вы можете просто сделать:

grep ',MT-/' final_matrix.csv

но если вы хотите использовать awk и сосредоточиться на 3-м поле, то это будет просто:

awk -F, '$3 ~ /^MT-/' final_matrix.csv

или:

awk -F, 'index($3,"MT-")==1' final_matrix.csv
0
28.01.2020, 02:15

Теги

Похожие вопросы