gpt4 book ai didi

awk 从列的末尾删除一些空格

转载 作者:行者123 更新时间:2023-12-05 02:32:45 35 4
gpt4 key购买 nike

我正在尝试使用以下命令从我的文件第二列末尾删除 2 个空格:

awk '{gsub(/[\$]/, "", $2); print}' 我的文件

我的输入文件的格式是这样的(这里的字符和数字只是为了显示格式):

   1AA       A      1   9.999   9.999   9.999
111BB B 1111 9.999 9.999 9.999
1111AABB ABCD 11111 9.999 9.999 9.999

我想要如下输出:

   1AA       A    1   9.999   9.999   9.999
111BB B 1111 9.999 9.999 9.999
1111AABB ABCD11111 9.999 9.999 9.999

实际上,第三列向第二列移动 2 个空格。

但是我的代码什么也没做:(

任何人都可以向我解释我的代码有什么问题吗?

提前致谢!

最佳答案

在每个 Unix 机器上的任何 shell 中使用任何 awk:

$ awk '{print substr($0,1,14) substr($0,17)}' file
1AA A 1 9.999 9.999 9.999
111BB B 1111 9.999 9.999 9.999
1111AABB ABCD11111 9.999 9.999 9.999

或将 GNU awk 用于 FIELDWIDTHS(使用 9999 或其他一些大数字而不是 * 如果您有不理解 * 的旧 gawk 版本 表示“行的其余部分”):

$ awk -v FIELDWIDTHS='14 2 *' '{print $1 $3}' file
1AA A 1 9.999 9.999 9.999
111BB B 1111 9.999 9.999 9.999
1111AABB ABCD11111 9.999 9.999 9.999

您的代码的问题是您试图从 $2 中删除 2 个空格,但您的字段是用空格分隔的,因此任何字段中都没有空格,包括 $2,空格位于字段之间。另外,您的正则表达式 /[\$]/ 表示“空白或文字 $ char”,而不是“字符串末尾前的 2 个空格”,我相信您认为它的意思。

关于awk 从列的末尾删除一些空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71157023/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com