比较 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'
我想比较每个单元格 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'