arrays - awk 相当于 C 中的 LTRIM 函数

标签 arrays linux string bash awk

我只需要从字符串中删除前导 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/

相关文章:

c++ - 如何在 Centos 6.5 上构建 freetype?

python——将电子邮件附件抓取到磁盘?

c++ - 弹性和 Bison : string literal

java - 如何使用 IDE (Android Studio) 从数据库 MySQL 设置 ArrayList 值?

javascript - API JSON 响应 选择最低价格

java - 在 arrayList 中搜索对象,然后多次向同一对象添加值

javascript - 我有几个文本值数组,我想选择其中一个数组用作 HTML 数据列表

linux - 即使网站在线,Ping 也返回错误

Java - 获取字符串的每个子串的所有排列,子串和排列

c - 是否有可能以某种方式使该程序崩溃?