我只需要从字符串中删除前导 0。我发现 C 中没有像 LTRIM 这样的内置函数。
我正在考虑使用以下 AWK 脚本来执行此操作:
awk -F"," 'BEGIN { a[$1] }
for (v in a) {
{if ($v == 0) {delete a[$v]; print a;} else exit;}
}'
但我猜我没有正确声明数组,它会抛出错误。对不起,AWK 编程的新手。你能帮我把它放在一起吗?
最佳答案
根据要求使用 awk
:
#!/usr/bin/awk -f
/^0$/ { print; next; }
/^0*[^0-9]/ { print; next; }
/^0/ { sub("^0+", "", $0); print; next; }
{ print $0; }
这规定不会将普通的“0”修剪为空字符串,并避免(可能)不需要修剪非数字 字段。如果后者实际上是所需的行为,则可以注释掉第二个模式/ Action 。在任何一种情况下,替换都是可行的方法,因为将数字添加到非数字字段会产生错误。
输入:
0
0x
0000x
00012
输出:
0
0x
0000x
12
输出修剪非数字字段:
0
x
x
12
关于arrays - awk 相当于 C 中的 LTRIM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819687/