sed внутри цикла foreach tcsh [закрыто]

во избежание завершающей точки с запятой

 awk -F\; 'NR>1 { printf ";" ;} {printf "%s",$1;} END {printf "\n"} '
  • printf не печатать перевод строки
  • NR>1 печатать только после первой строки
  • END печатать после Последняя линия.
1
08.03.2018, 10:10
1 ответ
> echo "$/"
Illegal variable name.
> echo '$/'
$/
> set i=blah
> echo "$i"'$/'
blah$/
> echo $i:q'$/'
blah$/

Entonces:

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

O use un shell con una sintaxis más limpia/mejor/más fácil comozsh:

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

Aunque aquí, en lugar de reescribir el testify.listuna y otra vez, podrías hacerlo de una sola vez:

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

O tal vez:

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

(ninguno probado ).

Todos aquellos que supongan que list2testcontiene una palabra por línea, sin espacios en blanco, sin /, sin comodines ni operadores de expresiones regulares...

0
28.01.2020, 00:38

Теги

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