Вычисление различий между столбцами файла с разделителями табуляции - PullRequest
1 голос
/ 06 мая 2011

У меня есть файл с разделителями табуляции из 4 столбцов и n строк.

Я хочу найти разницу в значениях, присутствующих в столбцах 3 и 2, и хочу сохранить их в другом файле.

Это то, что я делаю

cat filename | awk '{print $3 - $2}'>difference

и это не работает.Как я могу улучшить код?


Решение:

Мне не хватало закрывающей одинарной кавычки, и мои глаза были так настроены на экранчто я не могу понять из 35 строк кода, что происходит не так ... и из-за разочарования я написал вопрос на форуме ... и [чтобы завершить] комедию ошибок, синтаксис, который я написал здесь [в] вопрос правильный (поскольку он содержит обе одинарные кавычки).

Спасибо всем за помощь.

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

Установите разделитель полей, если в строках есть другие пробелы.

BEGIN {
  FS="\t"
}
2 голосов
/ 06 мая 2011

Попробуйте использовать -F, чтобы использовать разделитель в качестве табуляции и заключить ваш

cat filename | awk -F"\t" '{print $3 - $2}' > difference
1 голос
/ 06 мая 2011

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

Я только что сделал это:

awk '{print $3 - $2}' temp.txt

И это прекрасно работает.

Вот мой файл:

1   2       7       4
11  12      13      14
1   12      3       4
1   2       3       4
1   2       3       4

А вот мои результаты:

$ awk '{print $3 - $2}' temp.txt
5
1
-9
1
1
$ 

На самом деле, я использовал вашу команду и получил те же результаты?

Можете ли вы объяснить, что не работает для вас? Какие данные вы используете и какие результаты вы получаете?

1 голос
/ 06 мая 2011

Попробуйте это:

cat filename |awk -F '^ T' '{print $ 3 - $ 4}'> разница

, где ^T - разделитель табуляции (получить его, нажав Ctrl + V + T)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...