Удаление специального символа “[” использующий sed

В вашем примере, запутанные команды сценария оболочки. Вы должны обратить особое внимание на то, какой скриптовый язык Вы используете, а затем придерживаться синтаксиса команд. В вашем примере вы используете turbo C shell (tcsh), но затем смешиваете команды и синтаксис Bash/Bourne shell.

Вы можете использовать следующий подход, если действительно хотите tcsh. Скажем, у меня был этот пример файла:

$ cat afile 
1
2
3
4
5

И этот скрипт:

$ cat cmd.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "$i" 
end

Запустив его, вы получите этот вывод:

$ ./cmd.csh
1
2
3
4
5

Так что, чтобы завершить задачу, мы можем добавить в команду mkdir после echo:

$ cat cmd1.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "making directory: $i" 
  mkdir "$i"
end

Теперь, когда мы запускаем его:

$ ./cmd1.csh 
making directory: 1
making directory: 2
making directory: 3
making directory: 4
making directory: 5

В результате создаются каталоги:

$ ls -l
total 32
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 1
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 2
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 3
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 4
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 5
-rw-rw-r--. 1 saml saml   11 Oct 16 18:47 afile
-rwxrwxr-x. 1 saml saml   86 Oct 16 18:56 cmd1.csh
-rwxrwxr-x. 1 saml saml   55 Oct 16 18:51 cmd.csh
0
29.04.2019, 15:10
5 ответов

Попробуйте выполнить следующее:

sed 's/\[//'

[] - это специальные метасимволы, используемые для сопоставления символа из набора (например, [a-z] ).

-121--199258-

Удалить раздел на основе его метки? Что делать, если у вас есть две или более секций с одной меткой?

Вы можете удалить секцию с разделенной в режиме командной строки (неинтерактивной), но она не будет принимать метку секции в качестве аргумента. Необходимо вызвать parted с именем устройства в качестве аргумента и передать номер раздела команде rm :

parted $device rm $minor

например для удаления /dev/sdd2 необходимо выполнить команду

parted /dev/sdd rm 2
-121--230289-
start cmd:> echo "[9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]" |
  sed 's/[[]//'
9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]
2
28.01.2020, 02:13

Это бы помогло вам,

$ echo '[9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]'|sed 's/^\[//'
9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]
1
28.01.2020, 02:13

Попытка, делающая это:

sed 's/\[//'

[] специальные метасимволы, используемые для соответствия символу от набора (как [a-z]).

5
28.01.2020, 02:13

или напрямую с помощью bash

code="[9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]"
echo ${code/[/}
1
28.01.2020, 02:13

или

$ echo "[HTML],[FLASK]"|sed 's/[][]//g'
HTML,FLASK
-1
28.01.2020, 02:13

Теги

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