Заменить имя столбца на имя файла - PullRequest
0 голосов
/ 11 октября 2019

У меня есть несколько текстовых файлов в каталоге, и я хочу изменить имя столбца на основе имени файла.

 > Text1.out - filename
 counts  -column name
 apples
 pears
 oranges 

Требуемый вывод

> Text1.out - filename
 Text1_counts  -column name (change column name to filename using the string before the . )
 apples
 pears
 oranges

Я пытался

 awk -F, 'NR==1{split(FILENAME,a,".");split($1,b,"(");$1= a[1] "_" b[1]}1' Text1.out >Text1.out.counts

И это сработало, но когда я пытаюсь сделать несколько файлов, используя awk inplace, я получаю ошибки

awk -i inplace -F, 'NR==1{split(FILENAME,a,".");split($1,b,"(");$1= a[1] "_" b[1]}1' *.out

Сообщение об ошибке или, скорее, оно указывает на то, что мое использование неверно

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...

Любой другой способ переименовать это тоже подойдет. Я думаю, что мой терминал не поддерживает замены на месте awk.

1 Ответ

2 голосов
/ 11 октября 2019

возможно sed - лучшая альтернатива здесь

$ for f in file*; do sed -i '1s/.*/'"$f"'_&/' "$f"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...