我有一个输入文件,我需要读取并应用一些条件和路由到另外两个文件。
我的输入文件company.txt
100ABC COMPANY
2pen9999out
2cow7777out
2goa7777out
100XYZ COMPANY
2car9999out
2cow7777out
2HAT7777out
2BAL9999out
在这里,记录以1开头是标题,2是细节
我需要创建两个文件100ABC.txt和100XYZ.txt?
首先,我需要检查
inline = = $(cut -f 0-1 $ line)compnayName = = $(cut -f 4-6 $ line)
if [ $inline -eq "1"` ] and $compnayName="ABC"
if(record start with 2 and position 4 to 8 has value like 7777)
if yes, route them in 100ABC.txt
输出:100ABC.txt
2cow7777out
2goa7777out
在同一个我需要检查下一个公司XYZ,
if [$ inline -eq“1”`]和$ compnayName =“XYZ”if(记录以2开头,位置4到8的值如7777)如果是,则将它们路由到100XYZ.txt
像XYZ.txt
2cow7777out
2HAT7777out
尝试:
$ awk '/^1/{close(f); f=$1 ".txt"} /^2...7777/{print>f}' company.txt
运行此命令后,目录中将有两个新文件:
$ ls
100ABC.txt 100XYZ.txt company.txt
文件将包含以下内容:
$ cat 100ABC.txt
2cow7777out
2goa7777out
和:
$ cat 100XYZ.txt
2cow7777out
2HAT7777out
/^1/{close(f); f=$1 ".txt"}
如果当前行以1
开头,则关闭文件f
(如果存在)并为f
分配一个新值,该值由第一个字段后跟.txt
组成。/^2...7777/{print>f}
如果当前行以2...777
开头,其中.
匹配任何任何字符,则将此当前行打印到文件f
。