Как 'отбросить '/delete символы от перед строкой?

Можно попытаться нажать Alt + F7 чтобы проверить, существует ли выполнение графического интерфейса (можно также попробовать другие комбинации: Alt + F1 кому: F12). Можно также попробовать команду startx. Если это не вызовет это, то Вы получите графический интерфейс, это, скорее всего, не установлено.

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

В этом случае наилучший вариант для Вас, которыми это было бы, переустанавливает систему - можно попробовать, например, Ubuntu. Установка действительно проста, и будет намного легче что, фиксируя Ваш установленный Linpus.

12
29.07.2015, 05:32
5 ответов

Просто используя bash (или ksh93, откуда этот синтаксис берется, или zsh):

string="H08W2345678"

echo "${string:3}"
W2345678

echo "${string:0:-4}"
H08W234

Смотрите в вики Wooledge, чтобы узнать больше о манипуляции со строками ksh93.

17
27.01.2020, 19:54

Если у вас есть файл, в котором каждая строка одиннадцатисимвольную (или любую другую) строку, которую ты хочешь порезать, sed - это инструмент, который можно использовать.  Он прекрасно подходит для манипулирования одной строкой, но это перебор.  Для одной строки ответ Джейсона , наверное, самый лучший, если у вас есть доступ к bash версии 4.2 или выше.  However, the ${parameter:offset} and ${parameter:offset:length} syntaxes являются уникальными для баш (ну, баш, кш93, мкш, и зш) - Я не вижу их в The Open Group Base Specifications for Shell Command Language .  Если вы застряли с оболочкой, совместимой с POSIX. который не поддерживает расширение (извлечение) подстроки, вы можете использовать

$ printf "%s\n" "${string#???}"
W2345678

$ printf "%s\n" "${string%????}"
H08W234

, используя printf вместо echo для защиты от строк типа abc-e, где, когда вы пропускаете первые три символа, вы остаетесь с -e . (и echo -e не делает того, что бы вы хотели).

И, если вы вообще не используете оболочку семейства Борн. (или вы используете древнюю, до-POSIX, систему), они все равно должны работать:

$ expr " $string" : ' ...\(.*\)'
W2345678

$ expr " $string" : ' \(.*\)....'
H08W234

Дополнительное ведущее пространство, чтобы избежать проблем со значениями $string. которые являются фактическими операторами expr (например, +, /, индекс или совпадение ). или опции (например, --, --help или --версия).

2
27.01.2020, 19:54
$ echo "H08W2345678" | sed 's/^.\{3\}//'
W2345678

sed 's / ^. \ {3 \} //' найдет первые три символа по ^. \ {3 \} и замените пустым. Здесь ^. соответствует любому символу в начале строки ( ^ указывает начало строки), а \ {3 \} будет соответствовать предыдущему шаблону ровно 3 раза. Итак, ^. \ {3 \} будет соответствовать первым трем символам.

$ echo "H08W2345678" | sed 's/.\{4\}$//'
H08W234

Аналогично, sed 's /. \ {4 \} $ //' заменит последние четыре символа пробелом ( $ указывает конец строки).

8
27.01.2020, 19:54

С:

string="H08W2345678"

Соответствие 3 или 4 символам кажется простым (для большинства оболочек):

$ printf '%s\t%s\n' "${string#???}" "${string%????}"
W2345678      H08W234

Для более старых оболочек (, таких как оболочка Борна ), используйте:

$ string=H08W2345678

$ expr " ${string}" : "...\(.*\)"
W2345678

$ expr " ${string}" : " \(.*\)...." '
H08W234

Если требуется числовое значение символов, используйте:

$ expr " ${string}" : ".\{3\}\(.*\)"
W2345678

$ expr " ${string}" : " \(.*\).\{4\}" '
H08W234

Конечно, эти регулярные выражения также работают с sed, awk и bash 3.0+:

$ echo "$string" | sed 's/^.\{3\}//'
W2345678

$ echo "$string" | sed 's/.\{4\}$//'
H08W234

$ echo "$string" | awk '{sub(/^.{3}/,"")}1'
W2345678

$ echo "$string" | awk '{sub(/.{4}$/,"")}1'
H08W234

$ r='^.{3}(.*)$'; [[ $a =~ $r ]] && echo "${BASH_REMATCH[1]}"
W2345678

$ r='^(.*).{4}$'; [[ $a =~ $r ]] && echo "${BASH_REMATCH[1]}"
H08W234
0
27.01.2020, 19:54

How to 'drop'/delete characters from in front of a string?

I have a string that I would like to manipulate. The string is H08W2345678 how would I be able to manipulate it so the output is just W2345678?

echo "H08W2345678" | cut -c 4-

Similarly if the I wanted to drop the last 4 characters from H08W2345678 so that I get H08W234 how would I do this?

echo "H08W2345678" | cut -c -7
3
27.01.2020, 19:54

Теги

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