Взять 2 столбца в файле и заменить его рекурсивно - PullRequest
1 голос
/ 30 октября 2019

У меня n файлов хранится как .dat в каталоге, мне нужно взять только первые два столбца в каждом и удалить оригинал.

Я сделал это для одного файла

awk '{print $1,$2}' Test.dat > Test.dat.col
rm Test.dat
rename 's/.dat.col/.dat/' Test.dat.col

Как мне сделать это рекурсивно?

Моя неудачная попытка первой части find *.dat -printf "awk '{print $1,$2}' > \"%f.col\" | sh

1 Ответ

3 голосов
/ 30 октября 2019

Если у вас есть последняя версия GNU awk, вы можете просто сделать.

awk -i inplace '{print $1,$2}' *.dat

Типовое решение: Если у вас нетпоследнюю версию GNU awk не могли бы вы попробовать потом.

awk -v temp="temp" '
FNR==1{
  if(file){
     close(temp)
     system("mv \047" temp "\047 \047" file "\047")
  }
  file=FILENAME
}
{
  print $1,$2 > (temp)
}
' *.dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...