awk 拼接字符串的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk 拼接字符串的问题相关的知识,希望对你有一定的参考价值。
有谁知道awk中如何在拼接的字符串中包含双引号 ( " ) ?
这里有一个脚本:
1 #!/bin/sh
2
3 awk '
4 BEGIN
5 name = "longNBS.ID"
6 while(getline < name > 0) record[$1]++
7
8
9 close(name)
10 for(any in record)
11
12 command = "grep -P -m 1 "any" Sorbi1_GeneModels_AllModels_20080319.gff"
13 #print command
14 command | getline
15 lines[$0]++
16
17 for(pp in lines) print pp
18
19 ' $*
其中第12行是正则搜索,any部分是正则表达式,需要用双引号括起来才能给shell执行,但是直接加上双引号awk会报错....
请教大牛!!
把#print command的注释去掉,看看打印的是什么!
awk字符串拼接就是直接连,字符串部分用“”,引用变量不需要“”,直接写!
你的错误不一定是这个地方引起的! 参考技术B 你报错的原因应该是
grep 前的双引号和any前的双引号配对的原因
这种情况
通常是用单引号或 \ 转意来避免 参考技术C 加转义符试试:
command = "grep -P -m 1 \"any\" Sorbi1_GeneModels_AllModels_20080319.gff"本回答被提问者采纳
awk
命
令格式与特殊变量
awk ‘BEGIN {命令} {命令} END {命令}‘
说明:
-
""被当做拼接符使用
-
参数用","分割时,参数打印则以空格作为分割符输出
-
NR获取当前读取文件当前行号
-
NF获取当前读取文件当前行字段数
-
$0获取当前读取文件当前行文本
-
$n(其中n>0)获取当前读取文件当前行第n个字段内容
常用参数
-
awk -v v2=$v1 ‘{print v2}‘:引用外部变量(v1在此命令之前定义)
-
awk ‘/regex/‘ :符合正则表达式的行
-
awk ‘!/regex/‘ :不符合正则表达式的行
自带字符串函数
-
length(string):获取字符串长度
-
index(string,pattern):获取pattern字符串在string中出现的位置
-
split(string,array,delimiter):用delimiter将string分割并存入array数组
-
substr(string,strat,end):获取string从strat到end位置字符子串
-
sub(regex,replace,string):将string中第一个符合正则表达式regex的替换为replace
-
gsub(regex,replace,string):将string中所有符合正则表达式regex的替换为replace
以上是关于awk 拼接字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章