Удалить вкладки из данных в двойных кавычках

Вы можете удалить самую короткую ведущую подстроку, которая соответствует * /

tmp="${filename#*/}"

, а затем удалить самую длинную конечную подстроку, которая соответствует / *

echo "${tmp%%/*}"
0
23.04.2019, 21:16
1 ответ

Вы можете сделать это разными способами, некоторые из них показаны ниже:

С помощью редактора sedвы можете сделать это следующим образом (предполагая, что записи имеют сбалансированные двойные кавычки )и я показываю \tдля символа TAB, возможно, вам придется использовать литерал TABвместо этого, если ваш sedравен POSIX. И я конвертирую все TABs, которые находятся внутри двойных кавычек, чтобы изменить их на символ %, YMMV. Окраины TABsне тронуты.

$ sed -e '
   /\n/!y/"/\n/
   /\n/{
      s//"/;s//"/
      :loop
         s/\(".*\)\t\(.*"\)/\1%\2/
      tloop
      /\n/!b
      H;s/.*//;x;D
   }
' input.file

Использование Perlнемного упрощает дело:

$ perl -lpe 's/(?<=")(.*?)(?=")/$1 =~ y[\t][%]r/eg' input.file

ХТХ

0
28.01.2020, 03:47

Теги

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