1

我有一堆M文件,我想从中提取第一N行(从每个文件中)。我的文件被压缩在 BZ2 中。否则,做head -10 *就够了。

例如:假设我想从我的所有文件(A.txt、B.txt、C.txt 下面)中提取前 2 行。

一个.txt:

1A
2A
3A
4A

B.txt:

1B

C.txt:

1C
2C

预期的结果应该是这样的(即包含这些行,而不是强制按顺序排列):

1A
2A
1B
1C
2C

我尝试了以下方法:

  • bzcat * | head -10给了我整个解压缩文件的前 10 行,即没有足够的输出。我只会1A 2A在这里。
  • bzcat | head -10 *给我每个压缩文件的前 10 行,即无法读取。

有人有想法吗?

4

2 回答 2

2

使用for循环:

for i in *; do bzcat "$i" | head -n10; done

find

find -type f -exec bash -c 'bzcat $1 | head -n10' _ {} \;
于 2017-11-10T15:23:08.647 回答
0

使用xargs

find . -name "*" | xargs -I {} sh -c "bzcat {} | head -n10"

xargs -I 替换-str :

用从标准输入读取的名称替换初始参数中出现的 replace-str。此外,未加引号的空格不会终止输入项;相反,分隔符是换行符。

于 2017-11-10T15:26:21.807 回答