transpose: Wrapped with main function.
This commit is contained in:
parent
c9488299dc
commit
3e326d2ce5
6
G/G
6
G/G
|
@ -71,7 +71,11 @@ while(@ARGV) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exec join"|", map { "grep ".join(" ", shell_quote(@$_)) } @cmd;
|
if(@cmd) {
|
||||||
|
exec join"|", map { "grep ".join(" ", shell_quote(@$_)) } @cmd;
|
||||||
|
} else {
|
||||||
|
exec 'cat';
|
||||||
|
}
|
||||||
|
|
||||||
sub shell_quote {
|
sub shell_quote {
|
||||||
# Input:
|
# Input:
|
||||||
|
|
14
transpose/test.sh
Normal file → Executable file
14
transpose/test.sh
Normal file → Executable file
|
@ -37,21 +37,21 @@ dotest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
. `which env_parallel.bash`
|
. `which env_parallel.bash`
|
||||||
env_parallel -r <<EOF
|
env_parallel -r <<'EOF'
|
||||||
|
dotest /tmp/table-3,1000000.csv
|
||||||
|
dotest /tmp/table-3,10000000.csv
|
||||||
|
dotest /tmp/table-1000,100000.csv
|
||||||
# Test --block 1 (problem with GNU Parallel < 20180422)
|
# Test --block 1 (problem with GNU Parallel < 20180422)
|
||||||
dotest /tmp/table-3,1000.csv -b 1
|
dotest /tmp/table-3,1000.csv -b 1
|
||||||
|
dotest /tmp/table-3\|1000.csv
|
||||||
dotest /tmp/table-3,1000.csv
|
dotest /tmp/table-3,1000.csv
|
||||||
dotest /tmp/table-3,10000.csv
|
dotest /tmp/table-3,10000.csv
|
||||||
dotest /tmp/table-3,100000.csv
|
dotest /tmp/table-3,100000.csv
|
||||||
dotest /tmp/table-3,1000000.csv
|
|
||||||
dotest /tmp/table-3,10000000.csv
|
|
||||||
|
|
||||||
dotest '/tmp/table-10\\t20.csv'
|
dotest '/tmp/table-10\t20.csv'
|
||||||
dotest /tmp/table-10';'20.csv
|
dotest /tmp/table-10';'20.csv
|
||||||
dotest '/tmp/table-100\\t200.csv'
|
dotest '/tmp/table-100\t200.csv'
|
||||||
dotest /tmp/table-1,100.csv
|
dotest /tmp/table-1,100.csv
|
||||||
dotest /tmp/table-10,1000.csv
|
dotest /tmp/table-10,1000.csv
|
||||||
dotest /tmp/table-100,10000.csv
|
dotest /tmp/table-100,10000.csv
|
||||||
dotest /tmp/table-1000,100000.csv
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
|
@ -262,10 +262,21 @@ file_to_paste_files() {
|
||||||
|
|
||||||
super_paste() {
|
super_paste() {
|
||||||
# Like 'paste' up to 1000000 files
|
# Like 'paste' up to 1000000 files
|
||||||
|
# More than 250000 files requires extra filehandles for GNU Parallel
|
||||||
# The files are read from stdin
|
# The files are read from stdin
|
||||||
local sep
|
local sep
|
||||||
local paste_files
|
local paste_files
|
||||||
local fifo
|
local fifo
|
||||||
|
|
||||||
|
other_commands() {
|
||||||
|
printf "\rSIGINT caught "
|
||||||
|
ls -l $paste_files
|
||||||
|
cat $paste_files | parallel "eval rm -f {} $fifo{0#}"
|
||||||
|
rm $paste_files
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'other_commands' SIGINT
|
||||||
|
|
||||||
sep="$1"
|
sep="$1"
|
||||||
paste_files=`tempfile`
|
paste_files=`tempfile`
|
||||||
# basename
|
# basename
|
||||||
|
@ -305,40 +316,44 @@ usage() {
|
||||||
echo "Usage: $0 [-d delimiter] [-b blocksize]" 1>&2; exit 1;
|
echo "Usage: $0 [-d delimiter] [-b blocksize]" 1>&2; exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
block_size=10M
|
main() {
|
||||||
while getopts ":b:d:" o; do
|
block_size=10M
|
||||||
case "${o}" in
|
while getopts ":b:d:" o; do
|
||||||
d)
|
case "${o}" in
|
||||||
d="$(printf "${OPTARG}")"
|
d)
|
||||||
if [ "'" = "${d}" ] ; then
|
d="$(printf "${OPTARG}")"
|
||||||
echo "Delimiter cannot be '"
|
if [ "'" = "${d}" ] ; then
|
||||||
|
echo "Delimiter cannot be '"
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
b)
|
||||||
|
block_size="${OPTARG}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
usage
|
usage
|
||||||
exit
|
;;
|
||||||
fi
|
esac
|
||||||
;;
|
done
|
||||||
b)
|
shift $((OPTIND-1))
|
||||||
block_size="${OPTARG}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND-1))
|
|
||||||
|
|
||||||
if [ -z "${d}" ] ; then
|
if [ -z "${d}" ] ; then
|
||||||
d="$(printf "\t")"
|
d="$(printf "\t")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sep cannot be '
|
file="$@"
|
||||||
file="$@"
|
first_lines=`tempfile`
|
||||||
first_lines=`tempfile`
|
if [ -z "$file" ]; then
|
||||||
if [ -z "$file" ]; then
|
sep="$(stdin_detect_sep $first_lines)"
|
||||||
sep="$(stdin_detect_sep $first_lines)"
|
(cat $first_lines; rm $first_lines; cat) |
|
||||||
(cat $first_lines; rm $first_lines; cat) |
|
stdin_to_paste_files $block_size "$sep" | super_paste "$sep"
|
||||||
stdin_to_paste_files $block_size "$sep" | super_paste "$sep"
|
else
|
||||||
else
|
sep="$(stdin_detect_sep < "$file" $first_lines)"
|
||||||
sep="$(stdin_detect_sep < "$file" $first_lines)"
|
rm $first_lines
|
||||||
rm $first_lines
|
file_to_paste_files $block_size "$sep" "$file" | super_paste "$sep"
|
||||||
file_to_paste_files $block_size "$sep" "$file" | super_paste "$sep"
|
fi
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
# Make sure the whole file is read before starting
|
||||||
|
main "$@"
|
||||||
|
|
|
@ -7,7 +7,8 @@ INSTALLATION (create directories if they donot exist):
|
||||||
* Linux (current user): ~/.local/share/vlc/lua/extensions/
|
* Linux (current user): ~/.local/share/vlc/lua/extensions/
|
||||||
* Mac OS X (all users): /Applications/VLC.app/Contents/MacOS/share/lua/extensions/
|
* Mac OS X (all users): /Applications/VLC.app/Contents/MacOS/share/lua/extensions/
|
||||||
- Restart VLC.
|
- Restart VLC.
|
||||||
- The extension can then be found in the menu View > Wastebasket.
|
- The extension can then be found in the menu:
|
||||||
|
View > Move current playing file into wastebasket
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
--[[ Extension description ]]
|
--[[ Extension description ]]
|
||||||
|
|
5
ytv/ytv
5
ytv/ytv
|
@ -69,13 +69,14 @@ $SIG{'CHLD'} = sub { exit; };
|
||||||
do {
|
do {
|
||||||
# Sleep until there are matching files
|
# Sleep until there are matching files
|
||||||
sleep(1);
|
sleep(1);
|
||||||
@new = grep { not $before{$_} or $before{$_} > -M $_ } <*>;
|
@new = (grep { -s $_ > 1000000 }
|
||||||
|
grep { not $before{$_} or $before{$_} > -M $_ } <*>);
|
||||||
} until @new;
|
} until @new;
|
||||||
|
|
||||||
while(@new) {
|
while(@new) {
|
||||||
# Mark as seen
|
# Mark as seen
|
||||||
map { $before{$_} = -M $_ } @new;
|
map { $before{$_} = -M $_ } @new;
|
||||||
# Run VLC on the matching files
|
# Run VLC on the matching files
|
||||||
system("vlc",@new);
|
system("vlc", map { $a=$_; s/.part//; $a,$_ } @new);
|
||||||
@new = grep { not $before{$_} or $before{$_} > -M $_ } <*>;
|
@new = grep { not $before{$_} or $before{$_} > -M $_ } <*>;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue