【问题标题】:awk: if column empty not workingawk:如果列空不工作
【发布时间】:2017-08-01 14:05:51
【问题描述】:

互联网上的每个人都说你应该使用这个:

if ($2 == "")

或者这个:

if (!length($2))

或者这个:

if (!$2)

所有这些都不适合我。我有一个csv,用“;”分隔有 2 列。在某些情况下,第二列是空的(我可以在 gedit 中看到)。

我想区分该文件中的2 sets (2 sets = last column empty vs last column not empty)。如果我只是print length($2),我会看到第 2 列中没有任何内容的那些行的长度实际上是 1。

所以那里似乎有什么东西,但我看不到它是什么?

我怎样才能使那个东西可见,这使得长度等于 1?它似乎阻止了上面的这 3 个表达式匹配。

【问题讨论】:

  • 请显示一些示例数据和在您的系统上失败的一段更大的代码。我想到的一件事是你有 Windows 行尾 \r\n

标签: awk


【解决方案1】:

互联网上的每个人......

真的吗? :)

我的猜测是第二列包含\n\r,这是不可见的,但算作长度为1。看看这个:

How can I trim white space from a variable in awk?

【讨论】:

  • 是的,说真的,在他们教的每个线程中:P 谢谢,确实是 windows 换行符导致了麻烦(\r\n -> 刚刚用 sed 踢掉了 \r)。使用 linux 换行符,上面提到的所有这 3 个表达式都可以工作!
  • 我从来没有说过。我想我没有上网。
  • 好吧,至少the girls不会这么说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2018-03-21
  • 2014-05-15
相关资源
最近更新 更多