как я могу заменить вкладку или пустые места одной точкой с запятой?замените пробелы или вкладки точкой с запятой с помощью sed
Это то, что я пытаюсь:
sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.
Благодаря
как я могу заменить вкладку или пустые места одной точкой с запятой?замените пробелы или вкладки точкой с запятой с помощью sed
Это то, что я пытаюсь:
sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.
Благодаря
Просто используйте соответствующий класс POSIX символов:
sed 's/[[:space:]]\{1,\}/,/g' aws_lab.txt
Очень немногие SEDS признают \s
стенографии для [[:space:]]
и поскольку вкладка является одним из символов, включенных в [:space:]
, вам не нужно указывать ее отдельно. Кроме того, +
является метасимволом ERE, а не BRE, поддерживаемым sed по умолчанию, поэтому вам нужно добавить аргумент -E
arg для использования его (поддерживается только с помощью вариантов GNU и OSX sed).
Хорошие точки, thx, исправлены. Да, я знаю о '[: blank:]', но почти всегда бывает, что либо строка, в которой вы работаете, не содержит символы новой строки, и поэтому используете ли вы: '[: blank:]' или '[: space:]' не имеет значения, или ваша строка DOES включает в себя символы новой строки, а затем вы хотите, чтобы они обрабатывались как все остальные пробелы, поэтому вы хотите '[: space:]' вместо '[: blank:]'. Поэтому я обычно использую '[: space:]' для представления любого пробела и просто использую '[: blank:]', если у меня есть конкретная причина, чтобы исключить новые строки. –
Это может работать для вас (GNU СЭД):
sed -i.bak 's/[ \t][ \t]*/:/' file
Или
sed -ri.bak 's/[ \t]+/:/' file
Там, где есть явное пространство Infront вкладки:
sed -i.bak 's/[ \t][ \t]*/:/g' file
Заменит повторен шаблонов по всей линии.
Вам нужно '-r' использовать расширенное регулярное выражение. – aragaer
Try 's/[] + /;/g' где и - это одиночные символы, которые они представляют –
Marichyasana
@aragaer' -r' является только GNU sed, '-E' также поддерживается GNU sed, но дополнительно работает в OSX sed, поэтому он более портативен, чем '-r'. –