2016-09-18 2 views
0

Из файла с разделителями табуляции. Я пытаюсь извлечь все строки на основе уникального значения из столбца 4, а затем сохранить его как CSV. Тем не менее, я хотел бы извлечь все отдельные значения в столбце 4 и сохранить их как CSV за один раз.Команда AWK для извлечения отдельных значений из столбца

я смог извлечь одно значение с помощью следующей команды:

awk -F $'\t' '$4 == "\"C333\"" {print}' dataFile > C333.csv 
+1

Ой, это был вопрос о 16000-м 'awk'tagged! –

ответ

2

Давайте рассмотрим этот тестовый файл:

$ cat in.csv 
a  b  c  d 
aa  bb  cc  d 
1  2  3  4 
12  23  34  4 
A  B  C  d 

Теперь давайте напишем каждую строку с разделителями табуляции выходного файла, который названный в честь четвертой колонны:

$ awk -F'\t' '{f=$4".csv"; print>>f; close(f)}' OFS='\t' in.csv 
$ cat d.csv 
a  b  c  d 
aa  bb  cc  d 
A  B  C  d 
$ cat 4.csv 
1  2  3  4 
12  23  34  4 
+0

Но это закрывает файл после печати каждой строки. Не было бы более эффективно закрывать файлы в блоке 'END'? – user000001

+0

Сначала можно было отсортировать файл исходных данных в четвертом поле перед применением к нему этой awk-программы. –

+1

@ user000001 Это будет эффективно, но не надежно. С большим входным файлом легко достичь предела количества открытых файлов. Поскольку у меня были OP, сообщившие об этой проблеме, когда они проверяют код на их реальные данные, я склонен выбирать надежность по скорости. – John1024

Смежные вопросы