繁体   English   中英

从文本文件中提取行并将其保存在单独的文件中

[英]extract rows from text file and save it in separate files

我有一个非常大的文本文件,我想从中提取每两行并希望将其保存在单独的文件中,文件名应保存在名称 firstrowfirstcolumn_firstrowfourthcolumn 中

10  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
11  25  6  8  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
12  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
13  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
14  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
15  25  6  4  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
16  25  6  4  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
17  25  6  4  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
18  25  6  4  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
19  25  6  4  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
20  25  6  5  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1

例如 10_3.txt 应该包含

10  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1

同样 11_8.txt 应该包含

11  25  6  8  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1

同样 12_3.txt 应该包含

12  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1

等等

我尝试了下面的代码,但它不起作用

for file in input
do
awk 'NR==1,NR==2' $file
done

您能否尝试以下操作,完全基于您显示的示例。 写在手机上所以无法测试,我相信应该可以。

awk '
FNR%2!=0{
  close(output_file)
  output_file=$1"_"$4".txt"
}
{
  print > (output_file)
}' Input_file

或制作 2 个变量,您需要将其作为输出文件名。

awk -v first="1" -v second="4" '
FNR%2!=0{
  close(output_file)
  output_file=$first"_"$second".txt"
}
{
  print > (output_file)
}' Input_file

简要说明:如果行在行号方面是奇数,则只需检查条件,然后关闭先前的输出文件并根据当前行的字段创建新的输出文件名,然后将所有内容打印到该输出文件。

另一个 awk

$ awk ' { fn=$1 "_" $4 ".txt" ; print > fn; getline ;print > fn }' glk.txt
$ cat 10_3.txt
10  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
$ cat 11_8.txt
11  25  6  8  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
$ cat 12_3.txt
12  25  6  3  1  8  5  2  1  6  1
99  26  7  4  1  8  8  1  2  8  1
$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM