我的脚本有一个可能包含一些奇怪字符的变量:function foo() {
return $.when() // resolved promise
.then(function() {
if (condition) {
return somethingReturningPromise().then(doSomethingOnSuccess, function() {
return $.when(); // this line may be omitted with jQuery 3+, where error handlers "catch" by default; but don't omit the function wrapper.
});
} // else `return undefined` is implicit.
})
.then(mainFunctionReturningPromise); // here's your single mention of `mainFunctionReturningPromise`, at the end of the chain.
}
。我需要删除它们,但老实说,我甚至不知道从哪里开始匹配这些角色。我无法将它们复制并粘贴到我的脚本中,它们只显示为 ✔
。如何将这些字符与sed或awk匹配?由于系统可用性,我无法使用perl或php或sed或awk以外的任何东西。
答案 0 :(得分:4)
首先,在您的特殊字符周围添加一些标记字符串,然后hexdump -C
,以便您可以轻松查看它们。然后使用HEX代码编写sed
命令。例如:
[STEP 118] # cat file
>>> ✔<<<
[STEP 119] # hexdump -C file
00000000 3e 3e 3e f0 9f 8d bf 20 e2 9c 94 3c 3c 3c 0a |>>>.... ...<<<.|
^^^^^^^^^^^^^^^^^^^^^^^^
[STEP 120] # sed -e $'s/\xf0\x9f\x8d\xbf\x20\xe2\x9c\x94//g' file # need to use the $'...'
>>><<<
[STEP 121] #
然后在完成所有操作后删除添加的标志字符串。
答案 1 :(得分:1)
试试这个 - (文件包含一些控件M和你在问题中提到的字符,我试图只打印字母数字字符)
$cat f
hello vipin
street1
pin 12345
✔
$awk '/[[:alnum:]]/ {print }' f
hello vipin
street1
pin 12345
在SO上保存输入文件后,看起来控件M字符消失了。
答案 2 :(得分:0)
$ cat file
some weird characters: ✔. I need to remove
second line of some weird characters: ✔. I need to remove
$ tr -c -d '[:print:][:space:]' < file
some weird characters: . I need to remove
second line of some weird characters: . I need to remove
答案 3 :(得分:0)
我最终使用的解决方案只是将脚本的编码更改为UTF-8而不是ASCII。我用记事本++做了这个。然后我可以直接使用角色,而不是转换为十六进制的一些迂回方式(我无论如何都不能做,因为变量是环境变量而不是文件)或其他东西。我也不需要使用awk或sed,因为以下更简单:
cleaned_var=${environmental_variable//" ✔"}