В вашем примере, запутанные команды сценария оболочки. Вы должны обратить особое внимание на то, какой скриптовый язык Вы используете, а затем придерживаться синтаксиса команд. В вашем примере вы используете 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
Попробуйте выполнить следующее:
sed 's/\[//'
[]
- это специальные метасимволы, используемые для сопоставления символа из набора (например, [a-z]
).
Удалить раздел на основе его метки? Что делать, если у вас есть две или более секций с одной меткой?
Вы можете удалить секцию с разделенной
в режиме командной строки (неинтерактивной), но она не будет принимать метку секции в качестве аргумента. Необходимо вызвать 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]
Это бы помогло вам,
$ echo '[9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]'|sed 's/^\[//'
9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]
Попытка, делающая это:
sed 's/\[//'
[]
специальные метасимволы, используемые для соответствия символу от набора (как [a-z]
).
или напрямую с помощью bash
code="[9920380315,POSTPAID,0009,646.26,SELF,APPLICATION]"
echo ${code/[/}