字符第一次出现时的awk分割
尝试使用字符第一次出现时的awk分割,awk,Awk,尝试使用awk拆分每一行。如果有多个p或q则上的第二个拆分(无法正常工作(例如,第2行。如果出现多个拆分,我无法忽略第二个拆分。我尝试了^pq,但没有产生所需的拆分。谢谢:) 文件 1p11.2(120785011_120793480)x3 1q12q21.1(143192432_143450240)x1~2 awk awk '{split($0,a,"[pq(_]"); print "id"a[1],a[3]}' file 当前 id1 120
awk
拆分每一行。如果有多个p
或q
则上的第二个拆分(
无法正常工作(例如,第2行。如果出现多个拆分,我无法忽略第二个拆分。我尝试了^pq
,但没有产生所需的拆分。谢谢:)
文件
1p11.2(120785011_120793480)x3
1q12q21.1(143192432_143450240)x1~2
awk
awk '{split($0,a,"[pq(_]"); print "id"a[1],a[3]}' file
当前
id1 120785011
id1 21.1
所需的
id1 120785011
id1 143192432
另一个
awk
$ awk -F'[(_]' '{split($0,a,"[pq]"); print "id"a[1],$2}' file
id1 120785011
id1 143192432
由于您不控制行中
pq
s的数量,请使用两个不同的拆分,一个用于字段分隔符以查找值,另一个用于id。split
函数返回字段数量,因此我们可以利用这一点:
{
n = split($0, a, /[pq(_]/)
printf "id%s %s\n", a[1], a[n-1]
}
输出
ID120785011
ID114192432
以下是使用FS
regex本身并保持awk
简单的方法:
awk-F'[(|][pq]([^pq]*[pq])*“{print”id“$1,$3}”文件
ID120785011
ID114192432
FS
regex详细信息
”[()
:或|
:匹配[pq]([^pq]*[pq])*
或p
,后跟0个或多个非pq字符,后跟q
或p
q
$ sed 's/\([^pq]*\)[^(]*(\([^_]*\).*/id\1 \2/' file
id1 120785011
id1 143192432