输入:
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID
-------- -------- -------- -------- -------- -------- ---- ------
15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 P MvAvr15m 4355 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 Q MvAvr15m 6664 CP
Run Code Online (Sandbox Code Playgroud)
输出:
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT WERT
-------- -------- -------- -------- ------- ----
15MinAvg AIRSS …Run Code Online (Sandbox Code Playgroud) 在 bash 中,假设我有这些命令:
$ pyt[TAB][TAB]
pytest
python
python-config
python-dbg
Run Code Online (Sandbox Code Playgroud)
99% 的情况下,我会选择python. 它是如此恼人的是pytest弹出,并阻止我打字只pyt[TAB][RETURN]调用python。我可以隐藏pytestbash 完成吗?
我的限制:
我知道我可以删除pytest二进制文件/usr/bin/pytest以防止在 bash 中出现该建议。但是如果我没有 root 访问权限怎么办?如果pytest一个重要的脚本必须存在才能让其他脚本正常工作怎么办?
即使我可以删除pytest二进制文件(我以前也这样做过),但有时当我升级我的软件时,这个脚本又回来了。
我知道我可以使用 analias来保存我最喜欢的应用程序的击键(也许只是p为了python)。但我不喜欢这些非标准的缩写。当我远程连接到其他机器时,这让我感到困惑。
那么,有没有办法在 bash 完成中隐藏一些命令?欢迎使用其他 shell(zsh、fish 等)的答案,因为 bash 最近没有加快我的工作流程。
我收到超出我控制范围的输入文件,其中某些列中包含前导单引号,例如
'foo|'012|that's nice|bar
Run Code Online (Sandbox Code Playgroud)
我想从每个字段中删除所有前导单引号,以获得预期的输出:
foo|012|that's nice|bar
Run Code Online (Sandbox Code Playgroud)
使用 awk,我假设 gsub 正则表达式元字符像^每列一样工作,但它似乎只在行的开头工作:
$ echo "'foo|'012|that's nice|bar" | awk -F'|' '{gsub(/^'\''/,"")}1'
foo|'012|that's nice|bar
Run Code Online (Sandbox Code Playgroud)
如何从每列中删除前导单引号?
我想测试一个条件是真还是假。这是一个示例 bash 脚本:
#!/bin/bash
set -x
var=foo
if [[ $var==bar ]]
then
echo $var is bar
else
echo $var is not bar
fi
set +x
Run Code Online (Sandbox Code Playgroud)
我希望输出为foo is not bar,但我得到以下输出:
foo is bar
在查看调试输出时,我注意到正在评估条件-n:
+ var=foo
+ [[ -n foo==bar ]]
+ echo foo is bar
foo is bar
+ set +x
Run Code Online (Sandbox Code Playgroud)
在Bash Conditional Expressions 手册页上,它说
-n 字符串
如果字符串的长度非零,则为真。
但我对字符串长度是否非零不感兴趣,而是对两个字符串是否相等不感兴趣。