比较 Unix 脚本中每个单元格的大小

Compare size of each cell in Unix Scripting

我想比较每个单元格 size/length 并根据其长度更改其内容。

当前table格式为

AB
CD
AB
AB
CD
155668/01
AB
1233/10

我想将长度大于“2”的单元格替换为DE。

输出

AB
CD
AB
AB
CD
DE
AB
DE

我试过了

awk -F "," '{ if($(#1) > "2") {print "DE"} else {print  }}'

它说语法错误。 如果我在 $(# 的位置使用 wc -m,则输出与输入相同。

最简单的方法是使用sed:

sed '/^..$/!s/.*/DE/' file

awk中,你可以说:

awk '!/^..$/ { [=11=] = "DE" } 1' file

在这两种情况下,想法是相同的:如果该行不完全由两个字符组成,则将整行替换为 DE。在sed的情况下整行是.*,在[=13=的情况下是[=18=].

试试这个 -

$ awk '{print (length()>2?"DE":)}' f
AB
CD
AB
AB
CD
DE
AB
DE

惯用的方式是:

awk 'length() > 2 {  = "DE" } 1'