所以,我有一个bash脚本,其中我想要一个条件,这取决于perl脚本返回的内容.我的代码背后的想法如下:
for i in $(ls); do
if $(perl -e "if (\$i =~ /^.*(bleh|blah|bluh)/) {print 'true';}"); then
echo $i;
fi;
done
Run Code Online (Sandbox Code Playgroud)
目前,这总是返回true,当我在if语句周围尝试[[]]时,我遇到了错误.任何人的想法?
Ps我知道我可以用grep做到这一点,但这只是一个例子.我想知道如何让Bash一般使用Perl输出
Pps我知道我可以用两行来做,将perl输出设置为变量,然后测试该变量值,但我宁愿避免使用那个额外的变量.似乎很浪费.
我一直在努力将大块数据加载到bigquery中一段时间.在谷歌的文档中,我看到了insertAll方法,它似乎运行正常,但当我尝试在JSON中发送大约100k的数据时,给出了413"实体太大"的错误.根据Google的文档,我应该能够在JSON中发送最多1TB的未压缩数据.是什么赋予了?上一页上的示例让我手动构建请求主体,而不是使用insertAll,这更加丑陋,更容易出错.在这种情况下,我也不确定数据的格式.
所以,所有这些都说,将大量数据加载到Bigquery的干净/正确方法是什么?数据的一个例子很棒.如果可能的话,我真的不想自己构建请求体.
我目前正在将一些客户输入的字符串转换为 json 的一部分。我已经用字符串做了一个字典,现在正在做:
json.dumps(some_dict)
Run Code Online (Sandbox Code Playgroud)
问题是,对于一些客户输入的数据,他们似乎以某种方式输入了乱码,并尝试转储到 json 破坏了整个事情:
{'FIRST_NAME': 'sdffg\xed', 'LAST_NAME': 'sdfsadf'}
Run Code Online (Sandbox Code Playgroud)
这让我明白了:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 6: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我无法控制数据的来源,因此我无法预先阻止这种情况。所以,现在这个坏数据已经存在,我正在考虑用一些占位符字符替换未知/坏字符,或者删除它们。我怎样才能做到这一点?
我已经使用Perl一段时间了,已经习惯了语法:
return "$var1$var2";
Run Code Online (Sandbox Code Playgroud)
用于在一个步骤中轻松返回两个字符串的串联.有没有办法在Python中做类似的事情?如果可能的话,我希望分两步避免这样做.