Как проверить, запускается ли строка со значения, содержащего #, вкладка, и, возможно, расположите с интервалами?

perl -pe '(eof)?s/\s+$//:s/\s+$/,/' input.txt  

вывод: никакое запаздывание \n

EN1,EN2,EN3,EN4,EN5
3
05.02.2014, 01:26
2 ответа

С любой оболочкой POSIX:

tab=$(printf '\t') # or tab='   ' # (a real tab character)
case $outline in
  ("#${tab}modified:"*) ...
esac

С ksh93, zsh или bash:

case $outline in
  ($'#\tmodified:'*) ...
esac

или:

if [[ $outline = $'#\tmodified:'* ]]; then...

Ключ:

  • * не должен быть заключен в кавычки, иначе это взято буквально.
  • \t только расширен в $'...' тип кавычки (или printf в аргументе формата)
5
27.01.2020, 21:14

Можно использовать удар regex оператор сопоставления строк =~:

outline="#  modified: Jan 10 2015" # or
outline="#  new file: hello.sh"
if [[ $outline =~ ^#\   (modified|new file): ]]; then
    echo match
else
    echo no match
fi

Отметьте это оба пробела прежде modified экземпляры в коде и пробел прежде new file вкладки. пробел внутри new file регулярное пространство.

(Отредактированный для соответствия любому из этих двух форматов.)

1
27.01.2020, 21:14

Теги

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