使用 jq 和多个引号配置别名

问题描述

我正在尝试配置一个别名,该别名将为我提供 AWS 资源列表,但它一直无法使用单引号和双引号进行转义。

aws ec2 describe-instances --filters "Name=tag:tag,Values=foo1" "Name=bar,Values=foo2,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' |  sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq

用单/双引号包裹所有内容不起作用 - alias alias1='aws ec2 describe-instances --filters "Name=tag:tag,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' | sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq'

我想知道我应该把转义字符放在哪里

解决方法

在上述情况下使用别名需要转义很多引号

我最好的建议是使用函数

myFunc(){
aws ec2 describe-instances --filters "Name=tag:tag,Values=foo1" "Name=bar,Values=foo2,foo3" | jq '.Reservations[].Instances[].Tags[] | select(.Key=="Name") | .Value' | tr -d '"' |  sed -e 's/-pattern1.*//g' | sed -e 's/pattern2.*//g' | uniq
 }

你可以把它放在你的 .bashrc 中。只需输入 myFunc 即可运行命令

无需转义报价!如此简单,快乐的编码

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...