我有一个类似于下面的文本文件。
Code 1 (3)
5 10 10
6 10 10
7 10 10
Code 2 (2)
9 11 11
10 8 8
Code 3 (1)
12 10 9
Code 4 (2)
14 8 10
15 8 10
我只对第一列中的第一个和最后一个数字感兴趣。我想将第一个、最后一个和差异(1+最后一个)提取到一个新的文本文件中,其中每个第一个、最后一个和差异有一列。结果应如下所示。从技术上讲,差异列可以是括号之间的数字,因为该数字始终是每个字符串之间最后一个数字和第一个数字之间的 1+ 差值。请注意,输入文本文件中的最后一行下面没有字符串。
5 7 3
9 10 2
12 12 1
14 15 2
尝试 awk '/Code/{flag=1;next}/Code/{flag=0}flag'
给出每个字符串之间的所有行和列。尝试 awk '$1 ~/Code/{flag=1;next},$1 ~ 1/Code/{flag=0}flag'
会导致 ,
出现语法错误.
最佳答案
您可以使用这个 awk:
awk -v OFS='\t' '/^Code/ {
if (NR > 1)
print first, prev, (prev-first+1)
first = prev = ""
next
}
(first == "") {
first = $1
}
{
prev = $1
}
END {
print first, prev, (prev-first+1)
}' file
5 7 3
9 10 2
12 12 1
14 15 2
关于awk - 使用 awk,提取文本文件中列中两个字符串之间的第一个和最后一个数字,然后区分它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61001682/