2013-08-26 4 views
1

Я передаю команду cut, и ничего не происходит.Команда вырезания не работает

Выходной сигнал команды выглядит следующим образом:

 Name File Info  OS 
    11  FileName1  OS1 
    12  FileName2  OS2 
    13  FileName3  OS3 

Я пытаюсь извлечь столбец 1,2 из всех строк (начиная с строкой 2) с использованием следующий:

my_command | cut -f1,2 и тому вывод точно такой же, как у оригинала.

+0

Команда 'cut' берет полевой разделитель буквально. Если у вас есть несколько последовательных пробелов или вкладок, он считает, что каждый из них является разделителем пустого поля. – lurker

ответ

3

Вырезать не следует хорошо с несколькими пространствами в качестве разделителя. Использовать awk вместо этого

mycommand | awk 'NR>1{print $1,$2}' 
3

использовать tr -s для преобразования повторяющихся пространств в одно пространство. Теперь разрез можно использовать, когда одиночное пространство является разделителем разделителей.

mycommand | tr -s ' ' | cut -d' ' -f1,2 
3

Если несколько пробелов используются для разделителей и позиции столбцов фиксированной, можно использовать номера столбцов с разрезом:

mycommand | cut -c1-27 

Или вы можете потерять передние пространства с:

mycommand | cut -c5-27 

Это будет работать, даже если ваши поля имеют встроенные пространства. Метод awk потерпит неудачу, если у вас есть встроенные пространства в ваших полях.

+0

Ницца. Я не знал, что вы можете сократить количество символов. – user000001

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