Как удалить разделитель табуляции после последнего столбца с помощью unix - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть файл с разделителями табуляции.Я использую следующий код:

awk -v var="MAS_CONTROL_WL_column_nmbr.dat" 'BEGIN{RS="\n"}
{ while(getline line < var){ printf("%s\t",$line)};close(var);
printf( "\n") }' MAS_CONTROL_WL.tsv > test.tsv

Этот код печатает номер столбца, который присутствует в файле номеров столбцов, но проблема, с которой я сталкиваюсь, - \t, которая следует за последним столбцом.
Как это убрать?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Первый тестовый файл:

$ cat > foo
1
2
3

И awk:

$ awk -v var=foo '
BEGIN { RS="\n" }
{ 
    out=""                                              # introducing output buffer
    while(getline line < var) {
        out=out sprintf("%s%s",(out==""?"":"\t"),line)  # controlling tabs
    }
    close(var)
    print out                                           # output output buffer
}' foo | cat -T                                         # useful use of cat

Вывод:

1^I2^I3
1^I2^I3
1^I2^I3
0 голосов
/ 06 марта 2019

Если вам все еще нужен ответ на исходный вопрос (удаление \ t после последнего столбца): sed -i 's/[[:space:]]$//' your_file.tsv удалит пробел в конце строк вашего файла.

0 голосов
/ 26 февраля 2019

Вместо того, чтобы печатать «поле-вкладку» для каждого поля, напечатайте первое поле без вкладки, а затем добавьте остальные как «поле-вкладку»:

awk -v var="MAS_CONTROL_WL_column_nmbr.dat" '
    BEGIN{RS="\n"}
    {
        if (getline line < var) printf("%s",$line);
        while (getline line < var) printf("\t%s",$line);
        close(var);
        printf( "\n");
    }
' MAS_CONTROL_WL.tsv > test.tsv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...