考虑到我有一个包含大量数据的文件,我想捕获 2 个匹配之间的数据并将捕获的数据移动到单独的临时文件中,免责声明:数据字符串包含正斜杠“/”。
1 title {data1/A}
2 ..
3 ..
4 ..
5 title
6 title {data1/data2/AB}
7 ..
8 ..
9 ..
10 title
11 title {data1}
12 ..
13 ..
14 ..
15 title
16 title {data1/data2/AB/data3}
17 ..
18 ..
19 ..
20 title
现在,每当它捕获“B”时,它应该在临时文件中的匹配行和标题行之间移动数据,就像这里从第 6 行到第 10 行,从第 16 行到第 20 行
我试过了,
awk '/B/,/^title$/' file > temp
这会使用该数据创建一个名为 temp 的新文件,但原始文件保持原样,我想要 2 个单独的文件,一个是临时文件,另一个是删除了临时文件数据的原始文件。
也不知道是否执行正确,该文件是一百万行文件。
awk -v with=temp_with -v without=temp_without '
BEGIN { dest = without }
/^title$/ { dest = without }
/B/ { dest = with }
{ print > dest }
' file
您可以使用
diff
检查发生了什么。例如:
diff -u file temp_with | less