我使用grep
使用不同的正则表达式从长字符串中获取我想要的内容。我grep
每个模式并将结果存储在变量中,稍后我paste
将不同变量的列表存成我的表。
像这样:
FIELD_A=$(grep -o 'pattern1' Longstringfile)
FIELD_B=$(grep -o 'pattern2' Longstringfile)
FIELD_C=$(grep -o 'pattern3' Longstringfile)
FIELD_D=$(grep -o 'pattern4' Longstringfile)
paste <(echo $FIELD_A |tr ' ' '\n') <(echo $FIELD_b |tr ' ' '\n') <(echo $FIELD_c |tr ' ' '\n') <(echo $FIELD_d |tr ' ' '\n') > Resultfile
使用AWK可以更简单吗?
当我用这件事完成任务时,我想:看起来四处走动,终于到了我邻居家。后来我进入了AWK,我发现使用这种东西是一件好事,问题是我对它不太了解,我正在学习,但有时候教程会朝不同的方向发展。
答案 0 :(得分:1)
您可以尝试:
awk -f e.awk Longstringfile > Resultfile
其中e.awk
是:
BEGIN {
w[1]="pattern1"
w[2]="pattern2"
w[3]="pattern3"
w[4]="pattern4"
}
{
nmax=0
for (i=1; i<=4; i++) {
line=$0
k=0
while (match(line,w[i],r)) {
line=substr(line,RSTART+RLENGTH)
n=split(r[0],q)
for (j=1; j<=n; j++)
a[i,j+k+N]=q[j]
k=k+n
}
if (k>nmax) nmax=k
}
N=N+nmax
}
END {
for (j=1; j<=N; j++)
print a[1,j] "\t" a[2,j] "\t" a[3,j] "\t" a[4,j]
}