Как удалить столбец или несколько столбцов из файла с помощью команды оболочки?

Проблема, с которой вы столкнулись, - это стандартный "pipe creates subshell" в bash.

например, если вы сделаете

a=10
echo 100 | read a
echo $a

то a все равно будет установлен в 10 с помощью bash.

В вашем случае у вас есть

igreppy | while read ...
do
  ....
done

и все вещи внутри этого while цикла будут находиться в под-оболочке.

Вместо этого его можно переписать, используя подстановку процесса

while read ...
do
  ....
done < <(igreppy ...)

Теперь для цикла while не создается под-оболочка.

14
11.08.2015, 05:41
1 ответ

Если вы открыты для решения Perl...

perl -ane 'printf("%-8s %-8s %-8s %-8s %-8s %-4s\n", $F[0], $F[1], $F[2], $F[3], $F[4], $F[6])' file

Эти опции строки команды -используются:

  • -nповторять каждую строку входного файла, не печатать каждую строку автоматически

  • -aрежим авторазбиения – разбить входные строки на массив @F. По умолчанию разделение по пробелам

  • -eвыполнить следующий perl-код

1
11.09.2020, 19:43

Теги

Похожие вопросы