printf "%s\t" Nt n{1..1600} >file_a
printf "%s\t" R cha 2 987 > file_aa
awk '{print}' file_a file_aa > newfile
создать файл, в котором заголовок похож
Nt /t n1 /t n2 /t n3 ....
проблема состоит в том, что при взгляде на то, как это печатает, оказывается, что в последнем n это
\t n 1 5 9 8 \t n 1 5 9 9 \t n 1 6
0 0 \t \n
таким образом, существует что-то после nt 1600 - как я могу проиграть, это длится \t
в awk? Или где-нибудь?
Я говорил о последнем \t
в этом \t n 1 5 9 8 \t n 1 5 9 9 \t n 1 6 0 0 \t \n
здесь - мне нужен символ новой строки - оба ответа не решили это.
Мне действительно нужно
printf "%s\t" Nt n{1..1600} >file_a
printf "%s\t" R cha 2 987 > file_aa
Должна быть новая строка.
Принятие Вас говорит [приблизительно 114], если Вы не хотите, чтобы та новая строка появилась, используйте cat
для присоединения к тем файлам вместо awk:
cat file_a file_aa > newfile
различие:
$ awk 1 <(printf "%d\t" {1..2} ) <(printf "%d\t" {1..2} )
1 2
1 2
$ cat <(printf "%d\t" {1..2} ) <(printf "%d\t" {1..2} )
1 2 1 2
<час> , Так как Вы хотите удалить запаздывание \t
, попробуйте:
sed -i 's/\t*$//' file_a
awk '{print}' file_a file_aa
\t*$
любое количество вкладок в конце строки $
. эффект:
$ awk 1 <(printf "%d\t" {1..2} | sed 's/\t*$//') <(printf "%d\t" {1..2} ) | od -c
0000000 1 \t 2 \n 1 \t 2 \t \n
0000011
При необходимости в новой строке просто добавьте один
{ printf "%s\t" Nt n{1..1600}; echo; } > file_a
{ printf "%s\t" R cha 2 987; echo; } > file_aa
sed 's/\t$//' file_a file_aa > newfile
Или без временных файлов:
{
printf "%s\t" Nt n{1..1600}; echo
printf "%s\t" R cha 2 987; echo
} | sed 's/\t$//' > newfile
Или, не имея необходимость явно удалять запаздывающие вкладки:
( # in a subshell, so IFS is not modified in the current shell
IFS=\t'
head1=( Nt n{1..1600} ); echo "${head1[*]}"
head2=( R cha 2 987 ); echo "${head2[*]}"
) > newfile
Вкладка там, потому что Вы добавляете его:
printf "%s\t"
, Который распечатает каждую строку, которую Вы даете сопровождаемому вкладкой. Так, последняя строка будет иметь вкладку после него также. Чтобы избежать, чтобы, Вы могли или удалить его после создания его с помощью sed
или подобные инструменты (см. @muru ответ ), или можно использовать различный инструмент для создания его. Например, perl
:
perl -le 'print "NT\tn", join("\tn",(1..1600)), "\nR\tcha\t2\t987\n"' > newfile