#!/bin/bash
awk -F '|' '
function print_to_file(str) {
print str > "file_"file_num;
}
NR == 1 {header = $0;}
NR > 1 {
if(!buf) {
file_num = 1;
print_to_file(header);
}
if(buf != $5) {
buf = $5;
cnt++;
}
if(cnt > 3) {
cnt = 1;
file_num++;
print_to_file(header);
}
print_to_file($0);
}
' input.txt
Выход:
$ tail -n +1 -- file_* # display content of all files with their filenames
==> file_1 <==
C1|C2|C3|C4|C5|C6
0|1|2|3|0-1-2-3|4
0|2|2|4|0-1-2-3|5
0|1|2|3|1-3-2-4|4
0|1|2|3|1-1-3-4|4
0|1|2|3|1-1-3-4|5
==> file_2 <==
C1|C2|C3|C4|C5|C6
0|1|2|3|4-5-2-6|4
0|1|2|3|4-5-2-6|6
0|4|5|3|7-4-2-4|4
0|1|2|3|7-4-2-5|4
0|1|2|3|7-4-2-5|5
0|1|2|3|7-4-2-5|6
==> file_3 <==
C1|C2|C3|C4|C5|C6
0|1|2|3|7-5-2-6|5
В случае множественного -бинарного вызова, такого как kmod вызывает сам себя, идея предоставить простой пользовательский интерфейс -с меньшим количеством опций.
man kmod говорит :«Большинство пользователей будут запускать его только под другими именами».
$ ls ??mod ???mod modprobe kmod -l
-rwxr-xr-x 1 root root 63496 Mar 11 2019 chmod
lrwxrwxrwx 1 root root 4 Feb 13 2019 depmod -> kmod
lrwxrwxrwx 1 root root 4 Feb 13 2019 insmod -> kmod
-rwxr-xr-x 1 root root 161856 Feb 13 2019 kmod
lrwxrwxrwx 1 root root 4 Feb 13 2019 lsmod -> kmod
lrwxrwxrwx 1 root root 4 Feb 13 2019 modprobe -> kmod
lrwxrwxrwx 1 root root 4 Feb 13 2019 rmmod -> kmod
В вашем примере это означает, что :есть один большой исполняемый файл/библиотека, а не «обычный» bin/exec
плюс some/lib/library
. Так что просто используйте любую символическую ссылку, чтобы вызвать его. Или, скорее, :используйте символическую ссылку rbenv
из любого места. Я полагаю, облегчает некоторые аспекты разработки.