我有命令将文件拆分成两行块 split -l 2 urls.txt
它会创建一些随机文件。我有一个场景,我想将其拆分urls.txt
成 2 行块,就像 php str_split 一样,然后循环每个 5 行块。
所以如果urls.txt
是:
example1.com
example2.com
example3.com
example4.com
example5.com
分割后的数组将是
array
0 {
example1.com
example2.com
}
1 {
example3.com
example4.com
}
2 {
example5.com
}
我使用 head -5 urls.txt 但我不知道如何循环它并增加每 n 个数字
答案1
tail
如果我理解了这个问题,那么你将需要和的组合head
,或者另一个类似的工具sed
。考虑到你想坚持使用tail
和head
,你可以这样做:
tail -n +${first_line} | head -n ${number_of_lines}
在其中man 1 tail
找到-n
参数:
-n, --lines=[+]NUM
output the last NUM lines, instead of the last 10; or use
-n +NUM to output starting with line NUM
因此,tail -n +10
将从文件的第 10 行开始打印所有内容。只需${first_line}
根据需要增加并设置正确的${number_of_lines}
。
如果这对于您的用例来说还不够快,您应该看看man 1 sed
。使用sed
,您可以完成与上述相同的操作:
sed ${first_line},+${number_of_lines}\!d
您要做的就是删除输入中除从到 之间sed
的所有行。${first_line}
${first_line} + ${number_of_lines}