мне часто нужно запускать некоторые Perl остротами для быстрых манипуляций с данными, какPerl линейный режим Oneliner с ARGV
some_command | perl -lne 'print if /abc/'
Чтение из трубы, мне не нужен цикл вокруг команды ARG имен файлов , Как я могу достичь следующего?
some_command | perl -lne 'print if /$ARGV[0]/' abc
Это дает ошибку:
Can't open abc: No such file or directory.
Я понимаю, что '-n' делает
while(<>) {.... }
вокруг моей программы, и <> принимает арг как имена файлов, но делать следующий раз каждый раз немного непрактично
#/bin/sh
while read line
do
some_command | perl -lne 'BEGIN{$val=shift @ARGV} print if /$val/' "$line"
done
Есть ли лучший способ получить «внутри» аргументы командной строки Perl ONE-LINER, не считая их именами файлов?
Почему так много людей (а не только этот плакат) зацикливаются на «Perl one-liners»? Они великолепны, когда они работают, но они не являются обязательными; многослойные работы тоже. –
@JonathanLeffler Хм .. это не о одной линии против двух линий. Я могу сделать многострочный скрипт с несколькими '-e'. Но речь идет не о том, чтобы делать ненужные файлы со сценариями. Я много раз использую oneliners, просто потому, что они являются быстрым способом делать некоторые мощные вещи непосредственно из командной строки без редактирования файла сценария ... Возможно, для вас это ОК, создайте файл сценария для 2-строчного скрипта - для меня это быстрее напишите его прямо в командной строке ...;) :) – kobame
@Jonathan, я управляю тысячами серверов. Один лайнер, который я могу вставить в ssh, может вставлять в ряд команд, передаваемых по каналам. Я пропускаю несколько журналов, могу быстро и полностью общаться с кем-то в чате и т. Д. И то, что я сделал, более очевидно в истории bash чем двухступенчатый vi/GET --./ mysecretskript. И с одним лайнером меня редко заманивают от моей настоящей задачи. И я редко пытаюсь установить модули Perl на случайный сервер, когда они могут быть не нужны ничем другим. И я редко нахожу, что я построил гигантскую библиотеку никогда-полезных, опять же недокументированных, таинственно названных сценариев. –