mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 06:37:46 +00:00
Port before_v0.60/data_extraction
before_v0.60/examples
before_v0.60/duplicates
(#847)
This PR is part of porting all old scripts #221 and includes a set of modules: - `data_extraction` - `examples` - `duplicates` ## 7 changed files: ### `data_extraction` - `data_extraction/ultimate_extractor.nu`: removed. Has already been ported to `modules/data_extraction/ultimate_extractor.nu` ### `duplicates` - `duplicates/duplicates.nu` -> `modules/duplicates/duplicates.nu` - `duplicates/example.nu` -> `modules/duplicates/example.nu` - `duplicates/README.md` -> `modules/duplicates/README.md`: unchanged ### `examples` - `examples/netstat.nu` -> `modules/examples/netstat.nu` - `examples/date_in_local_timezones.nu` -> `modules/examples/date_in_local_timezones.nu` - `befove_v0.60/assets/core_team.nu`: removed. This table has been embedded into `date_in_local_timezones.nu`
This commit is contained in:
parent
9d399d8902
commit
275a0f8f26
9 changed files with 81 additions and 93 deletions
|
@ -1,12 +0,0 @@
|
||||||
def "nu core-team" [] {
|
|
||||||
[
|
|
||||||
[ 'name', 'tz'];
|
|
||||||
[ 'andres', 'America/Guayaquil']
|
|
||||||
[ 'fdncred', 'US/Central']
|
|
||||||
[ 'gedge', 'US/Eastern']
|
|
||||||
[ 'jt', 'NZ']
|
|
||||||
[ 'wycats', 'US/Pacific']
|
|
||||||
[ 'kubouch', 'Europe/Helsinki']
|
|
||||||
['elferherrera', 'Europe/London']
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
#Function to extract archives with different extensions
|
|
||||||
def extract [name:string #name of the archive to extract
|
|
||||||
] {
|
|
||||||
let exten = [ [ex com];
|
|
||||||
['.tar.bz2' 'tar xjf']
|
|
||||||
['.tar.gz' 'tar xzf']
|
|
||||||
['.bz2' 'bunzip2']
|
|
||||||
['.rar' 'unrar x']
|
|
||||||
['.tbz2' 'tar xjf']
|
|
||||||
['.tgz' 'tar xzf']
|
|
||||||
['.zip' 'unzip']
|
|
||||||
['.7z' '/usr/bin/7z x']
|
|
||||||
['.deb' 'ar x']
|
|
||||||
['.tar.xz' 'tar xvf']
|
|
||||||
['.tar.zst' 'tar xvf']
|
|
||||||
['.tar' 'tar xvf']
|
|
||||||
['.gz' 'gunzip']
|
|
||||||
['.Z' 'uncompress']
|
|
||||||
]
|
|
||||||
|
|
||||||
let command = ($exten|where $name =~ $it.ex|first)
|
|
||||||
if ($command|empty?) {
|
|
||||||
echo 'Error! Unsupported file extension'
|
|
||||||
} {
|
|
||||||
nu -c (build-string $command.com ' ' $name)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
source lib/scripts.nu
|
|
||||||
source assets/core_team.nu
|
|
||||||
|
|
||||||
let next_call = ("2021-08-31 15:00:21.290597200 -05:00" | str to-datetime);
|
|
||||||
let people = (nu core-team | date local $next_call);
|
|
||||||
|
|
||||||
def say [block] {
|
|
||||||
each {|person|
|
|
||||||
do $block (
|
|
||||||
$person | merge {
|
|
||||||
[[name]; [($person.name | str capitalize)]]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} | str collect (char newline)
|
|
||||||
}
|
|
||||||
|
|
||||||
$people | say {|person| $"($person.name)'s timezone is ($person.tz)"}
|
|
||||||
|
|
||||||
$"
|
|
||||||
|
|
||||||
for the next call happening on ($next_call | date format '%c').. in their timezones they would be:
|
|
||||||
|
|
||||||
"
|
|
||||||
|
|
||||||
$people | say {|person| $"($person.name)'s: ($person.time)"}
|
|
|
@ -1,17 +0,0 @@
|
||||||
let ns = (netstat | lines | skip 1)
|
|
||||||
|
|
||||||
let first-batch = ($ns | keep until $it =~ Active | str collect (char nl) | from ssv -m 1)
|
|
||||||
let second-batch = ($ns |
|
|
||||||
skip until $it =~ Active |
|
|
||||||
skip 1 |
|
|
||||||
str collect (char nl) |
|
|
||||||
str find-replace "\[ \]" "[]" --all |
|
|
||||||
from ssv -m 1 |
|
|
||||||
default I-Node "" |
|
|
||||||
default Path "" |
|
|
||||||
each {|row| if $row.Type == DGRAM { $row | update Path { get I-Node } | update I-Node { get State } | update State "" } { $row } }
|
|
||||||
)
|
|
||||||
|
|
||||||
$first-batch
|
|
||||||
|
|
||||||
$second-batch
|
|
|
@ -1,13 +1,15 @@
|
||||||
# duplicates example
|
# duplicates example
|
||||||
echo $info | from json
|
use mod.nu *
|
||||||
|
|
||||||
let info = "[{name: "John", lastname: "Doe"}, {name: "John", lastname: "Roe"}, {name: "Jane", lastname: "Soe"}]"
|
let info = "[{name: "John", lastname: "Doe"}, {name: "John", lastname: "Roe"}, {name: "Jane", lastname: "Soe"}]"
|
||||||
echo $info | from json | duplicates name
|
print ($info | from json)
|
||||||
|
print ($info | from json | duplicates name)
|
||||||
|
|
||||||
#duplicates files example
|
#duplicates files example
|
||||||
echo A | save A.txt
|
echo A | save A.txt
|
||||||
echo A | save B.txt
|
echo A | save B.txt
|
||||||
# note that if I used "echo B | save B.txt" the function will give a false positive
|
# note that if I used "echo B | save B.txt" the function will give a false positive
|
||||||
echo ABC | save C.txt
|
echo ABC | save C.txt
|
||||||
ls
|
print (ls)
|
||||||
duplicates files
|
print (duplicates files)
|
||||||
rm A.txt B.txt C.txt --permanent
|
rm A.txt B.txt C.txt --permanent
|
|
@ -1,21 +1,21 @@
|
||||||
# duplicates returns the rows that correspond to duplicates of the given column.
|
# duplicates returns the rows that correspond to duplicates of the given column.
|
||||||
def duplicates [
|
export def duplicates [
|
||||||
column: string # Column to look duplicates at
|
column: string # Column to look duplicates at
|
||||||
--count(-c) # set it to display the number of times the value is repeated.
|
--count(-c) # set it to display the number of times the value is repeated.
|
||||||
] {
|
] {
|
||||||
group-by $column |
|
group-by {get $column | into string} |
|
||||||
pivot |
|
transpose |
|
||||||
insert count { $it.Column1 | flatten | length } |
|
insert count { $in.column1 | flatten | length } |
|
||||||
where count > 1 |
|
where count > 1 |
|
||||||
reject Column0 |
|
reject column0 |
|
||||||
if ($count | empty?) { reject count } { each { $it } } |
|
if ($count | is-empty) { reject count } else { each { $in } } |
|
||||||
flatten |
|
flatten |
|
||||||
flatten
|
flatten
|
||||||
}
|
}
|
||||||
|
|
||||||
# duplicates files recursively finds duplicate files in the current working folder.
|
# duplicates files recursively finds duplicate files in the current working folder.
|
||||||
# It uses a heuristic based on duplicate files having the same size.
|
# It uses a heuristic based on duplicate files having the same size.
|
||||||
def "duplicates files" [] {
|
export def "duplicates files" [] {
|
||||||
do -i {ls **/*} | duplicates size
|
do -i {ls **/*} | duplicates size
|
||||||
}
|
}
|
||||||
|
|
42
sourced/examples/date_in_local_timezones.nu
Normal file
42
sourced/examples/date_in_local_timezones.nu
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
def "nu core-team" [] {
|
||||||
|
[
|
||||||
|
[ 'name', 'tz'];
|
||||||
|
[ 'andres', 'America/Guayaquil']
|
||||||
|
[ 'fdncred', 'US/Central']
|
||||||
|
[ 'gedge', 'US/Eastern']
|
||||||
|
[ 'jt', 'NZ']
|
||||||
|
[ 'wycats', 'US/Pacific']
|
||||||
|
[ 'kubouch', 'Europe/Helsinki']
|
||||||
|
['elferherrera', 'Europe/London']
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
def "date local" [now] {
|
||||||
|
insert time {|value|
|
||||||
|
let converted = ($now | date to-timezone $value.tz);
|
||||||
|
|
||||||
|
$converted | format date '%c'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let next_call = ("2021-08-31 15:00:21.290597200 -05:00" | into datetime);
|
||||||
|
let people = (nu core-team | date local $next_call);
|
||||||
|
|
||||||
|
def say [closure] {
|
||||||
|
$in | each {|person|
|
||||||
|
do $closure (
|
||||||
|
$person | update name {|row| $row.name | str capitalize}
|
||||||
|
)
|
||||||
|
} | str join (char newline)
|
||||||
|
}
|
||||||
|
|
||||||
|
print ($people | say {|person| $"($person.name)'s timezone is ($person.tz)"})
|
||||||
|
|
||||||
|
print ($"
|
||||||
|
|
||||||
|
for the next call happening on ($next_call | format date '%c').. in their timezones they would be:
|
||||||
|
|
||||||
|
")
|
||||||
|
|
||||||
|
print ($people | say {|person| $"($person.name)'s: ($person.time)"})
|
25
sourced/examples/netstat.nu
Normal file
25
sourced/examples/netstat.nu
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
let ns = (netstat | lines | skip 1)
|
||||||
|
|
||||||
|
let first_batch = ($ns | take until {|it| $it =~ Active } | str join (char nl) | from ssv -m 1)
|
||||||
|
let second_batch = ($ns |
|
||||||
|
skip until {|it| $it =~ Active } |
|
||||||
|
skip 1 |
|
||||||
|
str join (char nl) |
|
||||||
|
str replace '\[ \]' "[]" --all |
|
||||||
|
from ssv -m 1 |
|
||||||
|
default I-Node "" |
|
||||||
|
default Path ""
|
||||||
|
| each {|row| if $row.Type == DGRAM {
|
||||||
|
$row | update Path { get I-Node } | update I-Node { get State } | update State ""
|
||||||
|
} else {
|
||||||
|
$row
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
print $first_batch
|
||||||
|
print $second_batch
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue