Соответствие строки для инициирования определенного аргумента

Одинарные кавычки завершаются одинарными кавычками; все другие промежуточные символы сохраняются точно, как, включая обратные косые черты. Таким образом нет никакого способа встроить одинарную кавычку между одинарными кавычками. (Но можно закончить одинарные кавычки, выйти из одинарной кавычки и запустить новый набор одинарных кавычек, как в 'Single quotes aren'\''t ever really embedded in single quotes.')

Предложение: Избегайте find+xargs когда grep -r pattern . может рекурсивно grep на текущем каталоге.

Ниже команд имеют эквивалентное поведение:

grep -rns "add_action('save_post'," .
grep -rns 'add_action('\'save_post\', .

Последняя команда интерпретируется как:

  1. 'add_action(' -> add_action(
  2. \' -> '
  3. save_post -> save_post
  4. \' -> '
  5. , -> ,

Связывая эти части, grep команда получает аргумент add_action('save_post',.

0
07.07.2013, 07:09
2 ответа
awk 'NF==2 {system("/bin/echo " $0); next;}
  {system("/bin/echo " $0 " | rev"); next;}' inputfile

Редактирование 1:

awk 'NF==2 {system("ssh user@remote kimera " $0); next;}
  {system("kimera " $0); next;}' inputfile

Если kimera ожидает отдельный аргумент затем, Вам нужно ... kimera \" $0 "\"" вместо этого.

0
28.01.2020, 02:53
  • 1
    Почему Вы использовали бы /bin/echo распечатать в awk? –  jordanm 07.07.2013, 08:23
  • 2
    Благодарите u hauke за ответ d... Предположим, что у нас есть двоичный файл, названный kimera и в локальной системе и в удаленной системе с именем хоста ghostprotocol... Как мы достигаем выше сценария.. –  stany 07.07.2013, 09:12
  • 3
    @jordanm, который Это не для печати, но просто фиктивной команды. –  Hauke Laging 07.07.2013, 18:51
  • 4
    Привет Hauke, Ваши вторые работы ответа. У меня есть небольшое изменение в требовании. как и когда я обрабатываю каждую строку в awk, я хочу записать что строка в файл. Я должен передать тот файл как вход к двоичному файлу. пример: если я пишу строку в выходной файл output1. затем я должен назвать двоичный файл как kimera-f output1. –  stany 08.07.2013, 19:44

Предположение, что могут только быть одно или два поля, и что все строки с двумя полями содержат метки времени, Вы могли выполнить в этом bash:

while read string date; do 
   ## If there are two fields, $string and $date, launch remote command
   if [[ $date ]] ; 
     then ssh user@remote kimera "$string $date"; 
   ## If there is only one field, no date, launch the local command
   else kimera $string; fi; 
done < file

Если Вы можете иметь различные числа полей и должны на самом деле проверить какое-то время штамп в формат NN:NN:NN, используйте это вместо этого:

perl -ne 'chomp; 
          if(/\d+:\d+:/){system("ssh user@remote kimera $_" )}
          else{system("kimera $_" )}
' file
1
28.01.2020, 02:53

Теги

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