Попробуйте этот однострочный awk,
$ awk 'END{ var=FILENAME; split (var,a,/\//); print a[5]}' /home/abc/imp/asgd.csv
asgd.csv
IIUC, вы можете использовать Bash функцию замены процесса для имитации второй формы:
$ echo foobar | grep bar
foobar
$ grep bar <(echo foobar)
foobar
Обратите внимание, что для того, чтобы это работало, используемая команда должна иметь возможность принимать файл, поскольку это делает параметр -grep
.
В целом вы можете думать о командах между каналом |
как о выполняемых в подоболочке.
Итак,
foo | bar
можно рассматривать как
(foo) | (bar)
Так что это может помочь понять, как перенаправление вписывается в вещи.
foo < bar | baz
будет эквивалентно
(foo < bar) | (baz)
т.е. вводом в foo
будет файл bar
, а выводом будет ввод в baz
.
Процесс подстановки следует тем же правилам перенаправления:
foo <(echo bar) | baz
эквивалентно
( foo <(echo bar) ) | (baz)