Shellscript получить данные столбца - PullRequest
2 голосов
/ 17 августа 2011

У меня есть файл, который является результатом команды comm, он имеет 2 столбца, я хочу разделить эти 2 столбца на два разных файла, как мне это сделать?файл выглядит так:

a
b
         g
         f
c
d

Ответы [ 3 ]

5 голосов
/ 17 августа 2011

В зависимости от разделителя столбцов вы можете сделать что-то вроде:

cut -f1 orig_file >file1
cut -f2 orig_file >file2

Здесь разделителем столбцов считается TAB. Если это другой символ, вы можете использовать опцию -d char для cut.

Если вы хотите удалить пустые строки согласно вашему запросу, вы можете добавить в каждую строку команду sed:

cut -f1 orig_file | sed -e /^$/d >file1
cut -f2 orig_file | sed -e /^$/d >file2
1 голос
/ 17 августа 2011

Вы можете вырезать соответствующие части на основе символьных индексов:

# assuming constant 5 chars for col1, 5 chars for col2
cat file | cut -c0-5  | sed '/^\s*$/ {d}' > col1
cat file | cut -c6-10 | sed '/^\s*$/ {d}' > col2

Канал sed удаляет пустые строки (те, которые имеют только пробел).Их также можно удалить с помощью grep -v '^[[:space:]]*$'.

1 голос
/ 17 августа 2011

Использование cut приведет к команде для каждого столбца.Вы можете сделать это с помощью awk в одной команде.

 awk '{for (i=1;i<=NF;i++) print $i>i".txt"}' your_file

По умолчанию Tab является разделителем полей.Включите разделитель полей, отличный от tab, затем добавьте флаг после awk, как показано ниже

awk -F"<field separator>" '{....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...