удаление скобок в файле с помощью sed - PullRequest
2 голосов
/ 04 декабря 2009

Может кто-нибудь помочь мне в удалении скобок в файле? вот мой сценарий ..

  #!/bin/bash

for file in fftw is_c mpi_tile pmb tau xhpl
do
    for state in C0 C1 C2 C4
    do
    printf "${file}_${state}_v1.xls"

    sed -e 's/\(//' ${file}_${state}_v1.xls
    sed -e 's/\)//' ${file}_${state}_v1.xls

    awk '{sum+=$3} ; END {print "  ", sum/NR}' ${file}_${state}_v1.xls >> c-state-residency.xls
    done
done

Ответы [ 4 ]

2 голосов
/ 04 декабря 2009

Краткий ответ: используйте --in-place с sed, чтобы делать то, что вы думаете.

Вы удаляете круглые скобки, а не скобки, и только первую в каждой строке (или вы бы это сделали, если удалили \, который вам не нужен). Это также кажется странной вещью в электронной таблице Excel.

Вы, вероятно, хотите направить вывод команд sed в awk вместо того, чтобы изменять файлы на месте ...

1 голос
/ 10 июня 2012

Я бы использовал tr -d ..., вот так:

$ echo "(this is my string)" | tr -d '()' 
this is my string
0 голосов
/ 09 декабря 2009

вместо использования sed, кажется, проще использовать "tr", чтобы заменить символы ничем

 cat ${file}_${state}_v1.xls | tr '(' '' | tr ')' '' > ${file}_${state}_v1.xls
0 голосов
/ 04 декабря 2009

Найдено решение для удаления специальных символов

#!/bin/bash

for file in fftw is_c mpi_tile pmb tau xhpl
do
    for state in C0 C1 C2 C4
    do
    printf "${file}_${state}_v1.xls"
    sed -e 's/[()]//g' ${file}_${state}_v1.xls
    awk '{sum+=$3} ; END {print "Average C-state residency  ", sum/NR}' ${file}_${state}_v1.xls >> c-state-residency.xls
    done
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...