【问题标题】:Using awk to print the last field then the first using $NF [duplicate]使用 awk 打印最后一个字段,然后使用 $NF [重复]
【发布时间】:2018-07-31 00:37:41
【问题描述】:

我不确定我是否理解 awk 中的 NF 变量。

我的示例文件(测试)包含一行:

1 2 3 4 5

以下按预期工作:

awk '{print $1,$NF}' test
1 5

但下一个例子没有(即相反):

awk '{print $NF,$1}' test
 1

我在这里缺少什么?我可以单独打印 $NF,也可以在 $1 之后打印,但不能在之前打印。

【问题讨论】:

  • 它对我来说很好用,你能检查一下是否有回车字符吗?通过cat -v file 一次?
  • 无法重现:echo "1 2 3 4 5" | awk '{print $NF,$1}' 工作正常
  • dos2unix myFile 可能会修复它。虽然您已经提供了一个很好的最小测试用例,但不要养成使用 test 的习惯,因为有一个同名的 shell 命令。祝你好运。

标签: awk


【解决方案1】:

由于它对我来说很好,我怀疑它可能是可能导致此问题的回车字符,如果是这种情况,请尝试以下操作:

1- 检查任何 Input_file 中是否存在回车符:

cat -v Input_file

2- 如果您在 Input_file 中发现任何回车字符,则可以通过以下操作将其删除:

tr -d '\r' < Input_file > temp_file  &&  mv temp_file  Input_file

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2017-06-02
    • 2013-07-29
    • 2011-05-17
    • 1970-01-01
    相关资源
    最近更新 更多