怎么在awk中判断字符串的长度
用string的成员方法length()或者size()都可以取得字符串长度
#include
#include
using namespace std;
int main()
{
string str = “Test string”;
cout << str.length() << endl;
cout << str.size() << endl;
return 0;
}
二者没有本质的区别,大部分情况都可以互换使用。但是表示的意义略有不同。
length()比较直观,表示的就是该字符串的长度。
size()表示的是string这个容器中的元素个数。如果使用过std::vector之类的容器的话,可以把string看做是一个vector
另外,strlen同样也可以用于C++的string。但是需要用c_str()将C++ string转换为char*类型。如下:
cout << strlen(str.c_str()) << endl;
但是不推荐这么做,有点画蛇添足的感觉
awk中怎么取得数组的长度
用awk的内置函数 length 就可以了.length(arr)
Shell中的awk
楼上的回答很正确!awk处理文件分记录(行)和域(列),$1指第一列,$2指第二列,依次类推.NR指文件的记录个数即行数.这应该更明白了吧!
awk 如何判断数值的大小
awk中可以使用C语言的语法. 直接用 if(a>b) 这样的形式判断即可.比如: echo | awk ‘BEGIN{a=2;b=5}{if(a>b) print "a>b"; else print "a<=b"}'
Linux中如何计算字符串长度
计算字符串长度可用的三种方法: echo “$str”|awk ‘{print length($0)}’ expr length “$str” echo “$str”|wc -c 但是第三种得出的值会多1,可能是把结束符也计算在内了. 判断字符串为空的方法有三种: if [ "$str" = "" ] if [ x"$str" = x ]
awk 在自定义函数中传入数组,打印数组长度报错attempt to use array `a (from a)’ in a scalar context
报错的意思是在一个期望标量值的场景下给了一个数组 你的脚本在Linux下面没有报错.修改为 F:\work tmp\test>awk ‘function abc(a){print length(a)}{print length($0);abc($0)}’ test44 ok22 hhh33 后函数也是正常运行的,因此自定义函数没有问题.
awk 在函数中怎么传参数
A.字符串函数:
1.sub和gsub函数:
sub函数在记录中查找能够匹配正则表达式的最长且最靠左的字串,然后用替换子串替换找到的子串。默认是整个记录,可指定目标字符串。
sub(regualr expression,substitution string);
sub(regualr expression,substitution string,target string);
eg: awk ‘{sub(/Mac/,”MacIntosh”); print}’ filename
awk ‘{sub(/Mac/,”macIntosh”,$1);print}’ filename
gsub类似于sub的用法,但是sub只对目标串中出现的第一个匹配进行替换。gsub则对字符串中的正则表达式进行全局替换,即替换出现在目标串的每一次匹配成功的子串。
2.index函数:index函数返回子串在字符串中的第一次出现的位置。从1开始算起。
index(string,substring)
eg: awk ‘{print index{hollow”,”low”)}’ filename;
3.lenght函数:这个函数常用,返回字符串的字符个数,支持中文字符
length(string) ; eg: awk ‘BEGIN{print length(“helloworld”)}’
4.substr函数:该函数返回从字符串指定位置开始的一个子串(从1开始算起)。如果指定了子串的长度,则返回字符串相应的部分。如果指定长度超出极限,则返回实际内容。
substr(string ,starting position);
sbustr(string,starting position,length fo substring);
eg: awk ‘BEGIN{print substr(“Santa Claus”,7,6)}’
5.match函数:该函数用于返回正则表达式在字符串中出现的位置,如果没有出现,则返回0.内置变量RSTART保存开始位置,RLEGNTH保存匹配到的长度。
match(string,regular expression)
eg: awk ‘BEGIN{start=match(“good morning everyone”,/n… e/); print
awk如何指定多分隔符
-F后面是可以跟正则表达式的,比如下面 awk -F[abcd;] 就可以多种字符同时当做分隔符. 上面是单个字符,也可以是多个或不定长度的字符串当做分隔符.
awk的问题
我感觉的话:“awk {print"awk -F / {printawk: …..}” 在AWK的程序中不能再用awk了吧,你是想用/来分割字符串吧,awk本身提供了很多字符串处理函数,可以实现你的这种要求的,你可以试一下!
unix中的awk问题
-F’=’ 指以"=" 作为分隔符,$2指取第二列 如: 1.txt中内容为:a1=a2=a3 b1=b2=b3 c1=c2=c3 则awk -F"=" ‘{print $2}’ 1.txt 结果为:a2 b2 c2 sed ‘s/DestDir = //g’|awk -F/ ‘{print $2}’ 将"DestDir = "这个串替换为空,然后将结果 以"/"作为分隔符,取第二列