Bash 分离grep&x27;s按目录输出
除了自己手动操作之外,还有没有其他快速的方法可以将grep的输出与它来自的目录/文件分开 行/输出的示例:Bash 分离grep&x27;s按目录输出,bash,split,grep,gawk,Bash,Split,Grep,Gawk,除了自己手动操作之外,还有没有其他快速的方法可以将grep的输出与它来自的目录/文件分开 行/输出的示例: C:/files/yeah1.txt:eaaakkkakaka:eeeaaa C:/files/yeah1.txt:iemeirmeiemime:eomeonefneinee C:/files/yeah1.txt:eanfienierniene:eoneofneoneo C:/files/yeah23.txt:ienfienienein:eingieniene C:/f
C:/files/yeah1.txt:eaaakkkakaka:eeeaaa
C:/files/yeah1.txt:iemeirmeiemime:eomeonefneinee
C:/files/yeah1.txt:eanfienierniene:eoneofneoneo
C:/files/yeah23.txt:ienfienienein:eingieniene
C:/files/nowayexample1.txt:49ng49n9n49n393n:g93nm9n39n33
C:/files/yeadddddddddh1.txt:tg93n93n393n93n3:349n39n39n3
因此,我想要的是,如果输出来自yeah1.txt
,则进入不同的输出文件,而不是yeah23.txt
,依此类推。使用awk:
awk -F ':' '{n=split($2,a,"/"); print >a[n]}' file
这将创建四个文件:
yeah23.txt
yeah1.txt
yeadddddddddh1.txt
nowayexample1.txt
文件yeah1.txt包含,例如:
C:/files/yeah1.txt:eaaakkkakaka:eeeaaa
C:/files/yeah1.txt:iemeirmeiemime:eomeonefneinee
C:/files/yeah1.txt:eanfienierniene:eoneofneoneo
我将解释它如何与第一行一起工作:
C:/files/yeah1.txt:eaaakkakaka:eeeaaa
首先,
awk
使用分隔符将行拆分为四部分:
$1
:C
$2
:/files/yeah1.txt
$3
:eaaakkakaka
$4
:eeeaaa
接下来,
n=split($2,a,“/”)
将$2(/files/yeah1.txt
)用分隔符/
分成三部分拆分到数组a
,并将数组元素的数量写入变量n
。数组a
包含以下内容:
a[1]
:没有,因为在第一个分隔符之前没有任何内容
a[2]
:文件
a[3]
:yeah1.txt
我假设$2
中的路径深度可以变化,因此我没有使用a[3]
,而是使用a[n]
a[n]
始终包含数组的最后一个元素a
(此处:yeah1.txt
)
最后一步,print>a[n]
将整行写入一个文件,该文件的名称位于最后一个数组字段(a[n]
)
我没有尝试过任何事情,因为我真的不知道我能做什么?总的来说,我对bash还不太熟悉,我的意思是我有一个想法,使用像awk一样的字符串分隔$1,但我真的不知道如何生成它?