我想使用 sed 在 csv 中以非人类可读格式创建一个新的数字列。为此,我将创建一个函数,然后通过
sed 's/(.*)/foo \1/e
将其应用到 sed 中。现在,我直接在文件上测试了 cat $file | cut -f1 -d" " | numfmt --from=iec --to=none
,它返回的正是我正在寻找的内容。当我尝试将其放入函数中时:
foo(){cat $1 | cut -f1 -d" " | numfmt --from=iec --to=none}
numfmt 非常不高兴,并坚持认为
none}
是无效格式;当我在“none”和大括号之间添加一个空格时,numfmt 会耐心等待输入,而不是关闭函数定义。
我在这里缺少什么?
您需要在
{
之后有一个空格,在 ;
之前需要一个 }
:
foo(){ cat $1 | cut -f1 -d" " | numfmt --from=iec --to=none; }
再清理一下:
foo(){ cut -f1 -d" " < "$1" | numfmt --from=iec --to=none; }
或:
foo(){ numfmt --from=iec --to=none < <(cut -f1 -d" " < "$1"); }