Показать статистику
0 голосов
от (260 баллов)

У меня есть такой файл.

[Guest]
[AAD_987d7f2f57d2]
[mhope]
[SABatchJobs]
[svc-ata]
[svc-bexec]
[svc-netapp]
[dgalanos]
[roleary]
[smorgan]

Как удалить  '[' и ']' из файла, чтобы я мог получить вывод, как показано ниже

Guest
AAD_987d7f2f57d2
mhope
SABatchJobs
svc-ata
svc-bexec
svc-netapp
dgalanos
roleary
smorgan
1.5тыс. просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)

Использование sed:

sed 's/[][]//g' file
  • Команда seds/pattern/replacement/modifiers что означает замену шаблона с заменой. модификатор означает g локально, иначе будет заменено только первое совпадение.
  • [...] является классом символов, поэтому любой символ в скобках соответствует.
  • закрывает класс символов, если он не находится на первом месте внутри. Поскольку мы хотим включить это в наш класс персонажей, мы помещаем его первым.
  • Замена в нашем случае пуста.
  • Используйте sed -i '...'для редактирования файла на месте.

Вы также можете использовать grep -P

grep -Po '\[\K[^]]*' file
от (2.7тыс. баллов)
0

 утилита 'standard' для удаления определенных символов tr:

NAME
       tr - translate or delete characters

SYNOPSIS
       tr [OPTION]... SET1 [SET2]

DESCRIPTION
       Translate, squeeze, and/or delete characters from standard input, writ‐
       ing to standard output.

Так например

tr -d '][' < file

В отличие от GNU sed, tr читает и записывает только в стандартные потоки; однако вы можете имитировать редактирование "in place" с помощью временного файла:

tmpfile=$(mktemp)
tr -d '][' < file > "$tmpfile" && mv "$tmpfile" file

или с помощью команды sponge из пакета moreutils:

tr -d '][' < file | sponge file

Вы также можете использовать awk- например, разбивая строки файла на поля , разделенные ]и [и печатая только второе:

awk -F '[][]' '{print $2}' file

Вы можете использовать тот же трюк с tmpfile, чтобы имитировать редактирование на месте, или с помощью GNU awk (также известного как gawk), используйте  модуль inplace:

gawk -i inplace -F '[][]' '{print $2}' file
...