sed dentro do loop foreach do tcsh [closed]

1
> foreach i ( 'cat /home/chandran/scratch_r/review/1810a042/list2test' )
foreach? sed -i "/^$i /s/$/ ASAN ASAN_CUI/" testify.list
foreach? end
Illegal variable name.
    
por pradeesha 08.03.2018 / 09:05

1 resposta

0

> echo "$/"
Illegal variable name.
> echo '$/'
$/
> set i=blah
> echo "$i"'$/'
blah$/
> echo $i:q'$/'
blah$/

Então:

sed -i '/^'$i:q' /s/$/ ASAN ASAN_CUI/' testify.list

Ou use um shell com uma sintaxe mais limpa / melhor / mais fácil, como zsh :

zsh% for i ($(< ~/scratch_r/review/1810a042/list2test))
for>   sed -i "/^$i /s/$/ ASAN ASAN_CUI/" testify.list

Embora aqui, em vez de reescrever o testify.list repetidamente, você poderia fazer isso de uma só vez:

sed -i "$(
    sed 's|.*|/^& /s/$/ ASAN ASAN_CUI/|' ~/scratch_r/review/1810a042/list2test
  )" testify.list

Ou talvez:

perl -lapi -e 'BEGIN{while (<STDIN>) {chomp; $w{$_}++}}
               $_ .= " ASAN ASAN_CUI" if $w{$F[0]}
              ' testify.list < ~/scratch_r/review/1810a042/list2test

(nenhum teste).

Todos aqueles que assumem o list2test contém uma palavra por linha, sem espaços em branco, sem / , sem curingas ou operadores regex ...

    
por 08.03.2018 / 09:13

Tags