比较Unix脚本中每个单元格的大小
我想比较每个单元格的大小/长度,并根据其长度更改其内容 当前表格的格式为比较Unix脚本中每个单元格的大小,unix,awk,scripting,string-length,Unix,Awk,Scripting,String Length,我想比较每个单元格的大小/长度,并根据其长度更改其内容 当前表格的格式为 AB CD AB AB CD 155668/01 AB 1233/10 我想更换长度超过“2”的电池 输出 AB CD AB AB CD DE AB DE 我试过了 awk -F "," '{ if($(#1) > "2") {print "DE"} else {print $1 }}' 它说的是语法错误。 如果我使用wc-m,如果$(#输出与输入相同。最简单的方法是使用sed: sed '/^..$/!s/.
AB
CD
AB
AB
CD
155668/01
AB
1233/10
我想更换长度超过“2”的电池
输出
AB
CD
AB
AB
CD
DE
AB
DE
我试过了
awk -F "," '{ if($(#1) > "2") {print "DE"} else {print $1 }}'
它说的是语法错误。
如果我使用
wc-m
,如果$(#
输出与输入相同。最简单的方法是使用sed
:
sed '/^..$/!s/.*/DE/' file
在awk中,您可以说:
awk '!/^..$/ { $0 = "DE" } 1' file
在这两种情况下,想法都是一样的:如果一行不完全由两个字符组成,则将整行替换为DE
。在sed
的情况下,整行是*
,在awk
的情况下,整行是$0
试试这个-
$ awk '{print (length($1)>2?"DE":$1)}' f
AB
CD
AB
AB
CD
DE
AB
DE
惯用的方法是:
awk 'length($1) > 2 { $1 = "DE" } 1'
两个都很好。谢谢。你能解释一下代码吗?你的意思是分配给
$1
?@MichaelVehrs:是的,谢谢。下次编辑:-)