С ed
(используя в подстановке литеральную табуляцию, составленную как Ctrl-V+TAB)
$ ed -s file << EOF
,s/0 //
,n
q
EOF
1 0 chr1 3000575 3000801 0 chr1 4340023 4340249 32 32
2 0 chr1 3000641 3000801 -1 chr1 3311943 3311783 32 32
3 0 chr1 3000674 3000801 -1 chr1 3001534 3001407 32 32
4 0 chr1 3000674 3000801 -1 chr1 3001534 3001407 32 32
5 0 chr1 3000674 3000801 -1 chr1 3001534 3001407 32 32
Команда (.,.)n
печатает адресованные строки, предваряя каждую строку номером строки и табуляцией - идеально для вашего формата с разделителями табуляции.
Когда вы запускаете script.sh
, он выполняется в подоболочке, и ваши псевдонимы не будут распространяться до вызывающей оболочки (или текущего сеанса, когда вы к нему обращаетесь ). Вам нужно получить сам script.sh:source script.sh
. Это приведет к тому, что команды будут выполняться в вашей текущей оболочке, и псевдонимы станут видимыми.
Дополнительное примечание :из соображений переносимости вам следует рассмотреть возможность использования .
вместо source
, так как первый является стандартом POSIX, а второй является башизмом .