Рейтинг:0

Как удалить определенный символ из файла

флаг za

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

[Гость]
[AAD_987d7f2f57d2]
[надеюсь]
[SABatchJobs]
[svc-ата]
[svc-beexec]
[svc-netapp]
[дгаланос]
[ролеар]
[сморган]

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

Гость
AAD_987d7f2f57d2
моя надежда
SABatchJobs
svc-ата
svc-beexec
svc-netapp
дгаланос
ролевой
сморган
Рейтинг:2
флаг in

Использовать сед:

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

Вы также можете использовать грэп -P как я уже предложил в вашем другой вопрос:

grep -Po '\[\K[^]]*' файл
Lorenz Keel avatar
флаг gr
Я был готов предложить `sed 's/\[\(.*\)\]/\1/' файл`, но ваш ответ более читабелен и элегантен, чем мой :-)
Lorenz Keel avatar
флаг gr
@tcprks, если вы хотите применить модификацию непосредственно к файлу (т. е. перезаписать его), вы можете добавить `-i` перед `file` (это верно только для части `sed` решения.
pLumo avatar
флаг in
спасибо, добавил это предложение в свои заметки :-)
Рейтинг:2
флаг hr

«Стандартная» утилита для удаления определенных символов тр:

ИМЯ
       tr - перевести или удалить символы

СИНТАКСИС
       tr [ОПЦИЯ]... НАБОР1 [НАБОР2]

ОПИСАНИЕ
       Переводите, сжимайте и/или удаляйте символы из стандартного ввода, записывайте…
       на стандартный вывод.

Так например

tr -d '][' < файл

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

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

или с губка команда из пакета больше утилит:

tr -d '][' < файл | губка файл

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

awk -F '[][]' '{print $2}' файл

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

gawk -i inplace -F '[][]' '{print $2}' файл

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.