Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 分离grep&x27;s按目录输出_Bash_Split_Grep_Gawk - Fatal编程技术网

Bash 分离grep&x27;s按目录输出

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

除了自己手动操作之外,还有没有其他快速的方法可以将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:/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,但我真的不知道如何生成它?