除了手动执行此操作以将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
不同的输出文件,依此类推。
答案 0 :(得分:1)
使用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:eaaakkkakaka:eeeaaa
首先
awk
将您的行与分隔符:
分成四部分:
$1
:C
$2
:/files/yeah1.txt
$3
:eaaakkkakaka
$4
:eeeaaa
接下来,
n=split($2,a,"/")
将$2
(/files/yeah1.txt
)与分隔符/
分成三个部分分配到数组a
,并将数组元素的数量写入变量{{ 1}}。数组n
包含:
a
:没有,因为在第一个分隔符之前没有任何内容
a[1]
:a[2]
files
:a[3]
我认为
yeah1.txt
中的路径深度可能会有所不同,因此我没有使用$2
而是a[3]
。a[n]
始终包含数组a[n]
的最后一个元素(此处为:a
)。
最后一步,
yeah1.txt
将整行写入名称位于最后一个数组字段(print >a[n]
)的文件中。