А если вы используете system()
для вызова uname -m
и проверки архитектуры вашего ядра?
if system("uname -m") == "armv7l\n"
set foo
set bar
endif
Исправление, предложенное в комментариях для добавления \n
к строке сравнения, так как uname -m
добавит новую строку после выполнения команды.
Со стандартным sed
вы бы поступили так:
sed 's/# *>#> *\(.*\)/some_fn("\1")/' file
#>#>
, кажется, допускает несколько дополнительных пробелов, поэтому я использовал # *>#> *
в качестве шаблона. Пожалуйста, адаптируйте его, если разрешены другие пробелы. .*
соответствует остальной части строки. Я поместил его внутрь \(\)
, поэтому я могу ссылаться на него в замене как\1
С этим можно быстро справиться, используя GNU sed
и параметр расширенного регулярного выражения -E
.
$ sed -Ee 's/^(\s+)#\s*>#>\s*(\S.*)/\1some_fn("\2")/' file
\1
и сообщение \2
и чередуем со строкой some _fn Или, с помощью awk
, мы выбираем разделитель полей как регулярное выражение #\s*>#>\s*
, поэтому тогда уровень отступа равен $1
, а сообщение$2
$ awk '
BEGIN {
s = "[[:blank:]]*"
FS = "#" s ">#>" s
OFS = ""; q = "\""
}
NF > 1 {
$2 = "some_fn(" q$2q ")"
}1
' file