Как добавить первые 2 буквы каждой строки файла в список, используя bash? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть файл ($ ScriptName). Я хочу, чтобы первые 2 персонажа в каждой строке были в списке (Starters). Я использую сценарий bash.

Как бы я это сделал?

Я ничего не пробовал, так как не знаю, как заставить это работать. Я думаю, что я должен использовать команду cut, однако сейчас я не знаю, как ее использовать.

Я использую manjaro 19 и последнее ядро.

Ответы [ 3 ]

1 голос
/ 29 февраля 2020

Попробуйте этот Shellcheck -чистый (за исключением отсутствующей инициализации ScriptName) чистый Bash код:

Starters=()
while IFS= read -r line || [[ -n $line ]]; do
    Starters+=( "${line:0:2}" )
done < "$ScriptName"
1 голос
/ 29 февраля 2020

Встроенная команда mapfile bash в сочетании с cut упрощает:

cut -c1,2 "$ScriptName" | mapfile Starters
1 голос
/ 28 февраля 2020

Чтобы получить первые два символа из каждой строки, вы можете использовать

cut -c1,2 "$ScriptName"

-c1,2 означает «выходные символы в позициях 1 и 2»

Я не уверен, что вы подразумеваете под "списком". Если вы просто хотите создать файл с результатами, используйте перенаправление:

cut -c1,2 "$ScriptName" > Starters

Если вы хотите заполнить массив, просто используйте

while IFS= read -r starter ; do Starters+=("$starter") ; done < <(cut -c1,2 "$ScriptName")

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

sed 's/[^[:alpha:]]//g' "$ScriptName" | cut -c1,2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...