filters
egrep
-v “content” 排除
-i ‘content’ 不区分大小写
-w ‘content’ to ignore white spa
[^] reg排除某字母
排除的逻辑:重复问题,前面不排除干净会导致后面的冲突
egrep -v .
prints all the empty lines in its input.
The command egrep '^$'
would also do this.
?
to make the fractional part optional.
cut -d’单字符‘ -f 列
sort 默认升序
sort -n
按数字顺序排序(默认按字母顺序排)
sort<file
按第一列排
sort -k2n
按第二列排
sort -k2nr
按第三列排
sort -r
逆序排
sort -nr
按数字顺序逆序排
uniq 筛重复
uniq -d
找出重复行
-c 计数
uniq -c
rev
逆置字符串,双次逆置可以与cut取倒数某列
wc -l
统计总行数
tr 替换一系列字符 为 另一系列字符
tr -d ‘a’ 删除a
tr -c = 'complement' so it replaces everything NOT in string 1 with string 2
tr -s = 'squeeze' repeated characters, so it replaces any duplicate newlines with just one
tr -cs ‘aa’ ‘bb’ 在aa中插入bb
wc -w 单词数量
wc -c 多少byte
tr -cs 'a-zA-Z0-9' '\n' | wc -l //统计单词数量
y=“Y Y”
echo "$y"
Y Y
| $y
expands into a single argument |
echo '$y'
$y
| the single quotes prevent variable expansion |
date当前时间
cat打印文本
tac行逆序打印文本
shell #!/bin/sh
shell
return是exit 0和1
exit 0 正常运行退出
exit 1 非正常运行导致退出
数字处理
自增
i=$(($i+ 1))
参数
参数数量 $#
echo ${small[*]}
输出整个数组
参数数组 $@
| n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是2。 |
| * | 传递给脚本或函数的所有参数。 |
shell中计算
i=
expr increment``
i=$((i + increment))
字符串处理
1.字符串衔接
smallfiles="$smallfiles $file"
判断
1.判断数字
if test “$#” -eq 2
then
do sth
fi
eq 等于
ne 不等于
gt 大于
lt 小于
ge 大于等于
le 小于等于
"3" ne "3.0"
but "3" == "3.0"
注意变量➕双引号
shell中==和!=都可以用于判断数字
2.判段文件是否存在
if test -e $file
1/2>/dev/null
2>/dev/null
忽略程序自己的错误提示(有时要求输出特定的提示)
if egrep -iw '</?blink>' $file >/dev/null
不加数字默认1,可以在筛选中避免输出
循环
1.数字循环
for i in $(seq 1 10)
do
do something
done
for varible1 in {1..5}
for((integer = 1; integer <= 5; integer++))
while ((i <= finish))
2.文件循环
for file in *
3.while循环
<1> 永真
while true
do
do sth
done
文件处理
1.图片类型转换
convert $fileA $fileB
rm $fileA
2.图片展示
display $img
3.stdin
read message
4.mutt 用于邮件发送
echo "$message"| mutt -s 'image' -a "$png_file" -e 'set copy=no' -- "$emailaddress"
5.给文件改名
将文件a命名为b
mv a b
6.将文件a的时间设置为b
touch -r a b
7.罗列文件信息
ls -l
8.>/dev/null
不显示任何信息在控制台(跟在会有输出的操作之后取消那些输出)
9.basename
去除路径信息比如一个文件path:dira/dir2/c/a base这个下来就是a
10.复制文件
cp $file1 $file2
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
cp -p file2
11.删除文件
rm -rf 文件名
12.检测目录是否存在
if test -d dirname
ftype=file -b $f | sed 's/ //'
bytes=`wc -c <"$f" 检测文件多少byte
perl 格式:#!/usr/bin/perl -w
1.匹配
$line =~ s/[0-4]/</g;
while (<STDIN>) {
tr/0-9/<<<<<5>>>>/;
print;
}
参数
参数数组/参数个数:@ARGV
参数个数 $#ARGV+1
数组
push
给数组➕值: push @files,$file;
给数组➕多个值: push @names, @others;
pop 取出数组最后一个值(下标@arr-1)并删除$file = pop @files;
!!
shift 取出数组第一个值(下标0)并删除 $file = shift @files;
unshift 给数组开头传入一个或多个值 unshift @files,$file
unshift @files,@puls_files
数组最后一位下标-----$#arr
直接打印数组第#lines个
print @lines[$first..$#lines];
数组排序
1.sort @arr
基于ascll码排序,升序
2.sort{$a<=>$b} @arr
基于数值比较,升序
3.sort { $a cmp $b } @words;
按字母顺序比较,升序
sometime注意大小写
4.@fields = reverse @fields;
数组逆置
5.$line_out = join ' ', @fields;
数组转字符串
harsh
1.提取key的操作 exp: harsh{a}<=>harsh{a}<=>harsh{a}<=>harsh{a}<=>harsh{key(keys%harsh){
harsh{tag_count{tag_count{a cmp $b} keys %tag_count;`
!/usr/bin/perl -w
while ($line = <>) {
$line =~ tr/A-Z/a-z/;
foreach $word ($line =~ /[a-z]+/g) {
$count{$word}++;
}
}
@words = keys %count;
@sorted_words = sort {$count{$a} <=> $count{$b}} @words;
foreach $word (@sorted_words) {
printf "%d %s\n", $count{$word}, $word;
}
return die “message”== or ==exit
exit 0 正常运行退出
exit 1 非正常运行导致退出
文件处理
1.打开文件
open F,’<‘,$file or die “$0: $file cannot open $!\n”;
@lines = <F>;
close F;
$0文件名
2.文件复制模块
use File::Copy;
copy( $original, $new_copy ) or die "Copy failed: $!";
注意目录不存在or目录下没文件可能会报错
➕处理避免
3.创建目录
mkdir($dirname) or die “cannot create $dirname\n”
4.取目录下文件(隐藏目录这个方法不行)
@files = glob( $dir/* );
一定要+最后的*号
5.fetch url
open my $f, '-|', "wget -q -O- $url" or die;
字符串处理
eq 相等
ne 不相等
lc(line) 字符串转大写
== 数字相等
!= 数字不相等
这里perl 和shell其实都是eq这种比较字符串,==这种比较数字,但是shell如果字符串是数字用eq也可以比较
-
匹配拆分字符串
@words=($line =~ /[A-Za-z]+/g);
(这里是以匹配部分为内容) 或者@words=split /[^a-zA-Z]+/ ,$line;
(这里匹配的是分隔标志) -
$count++ if $word ne '';
system "cut -c$ARGV[0]-$ARGV[1] $ARGV[2]";
perl中使用filter -
格式化处理
printf “%${width}d”,$x
-
join split
str1); //以参数1为分割符拆分数组
从stdin读入文本 @lines = <>;
循环语句
1.循环
foreach(i<@ARGV;text .= <> foreach (1..$n);`
while ($n-- > 0)
{
file (@ARGV[1..$#ARGV])`
ascll
ord(n) 转字符
函数和方法
sub main{
back_file($file);
}
sub back_file{
$file = @_; #传参数的格式
my ($source, $destination) = @_; #传参数的格式
}
example:
@a = (1..5);
@b = grep { $_ = $_ - 3; $_ > 0} @a;
print "@a\n";
print "@b\n";
It prints:
-2 -1 0 1 2
1 2
sub compare {
my $a_length = length $a;
my $b_length = length $b;
if ($a_length == $b_length) {
return $a cmp $b;
} else {
return $a_length <=> $b_length;
}
}
chmop 去除行尾的\n
shell:
if diff "$file" "$directory2" >/dev/null 2>&1
then
basename "$file"
fi
javascript
node js 参数 process.argv[2]
//第一个参数
记不得filter map就用for
for中in是遍历下标of是遍历值
- filter 可以理解为将for中if的内容写进函数中filter过滤
const startWithA=(user)=>user.name.startsWith(‘A');
const isMale=(user)=>user.gender==='male';
const maleA = users.filter(startsWithA).filter(isMale);
- map map是处理一个数组生成一个新的数组,所以注意参数不可以是字典元素
用方法筛选字典元素的值({keyname})=>keyname_do_sth;处理的是value不是key(keyname包裹在{}中挑选数据中的这个key作为参数值)
const match = ({matches})=>parseInt(matches);//这是一个function
const map_match = data.map(match);
- reduce
const sum =(x,y)=>x+y;
const sum_matches = map_match.reduce(sum,0);
- 间隔运行方法
setInterval(()=>{do sth},10000);
- js内置作为调整某个css class是否工作的方法
toggle(’cssname’)
output.classList.toggle('cssname') //用作自动判断元素是否有该方法list,如果有则删除,如果没有则添加
content.style.display = (content.style.display == 'none') ? 'block' : 'none';
- 事件委托
event.target
function hide(e){
// e.target 引用着 <li> 元素
// 不像 e.currentTarget 引用着其父级的 <ul> 元素.
e.target.style.visibility = 'hidden';
}
// 添加监听事件到列表,当每个 <li> 被点击的时候都会触发。
ul.addEventListener('click', hide, false);
- js中变量也可以用变量
document.getElementById(`tab-${i}`).classList.remove('active');
- promise可以是一个数组,通过数组的操作同时处理多个promise . promise.all()
eg1
Promise.all([
getJSON('https://jsonplaceholder.typicode.com/users'),
getJSON('https://jsonplaceholder.typicode.com/posts'),
])
.then(([users, posts]) => {
do sth
}
eg2
while(i < 5 ){
promises.push(fetch(url));
}
promise.all(promises).then(responses=>{
do sth
});
避免使用var ---hoisting it means it’s global, but we prefer to make it more reliable (let &const)
=> :a short hand to declare a quick function
import function from package ---- export function
Node.js is a serverside JavaScript environment that provides an interface with the operating system.
tut 6-t13
网友评论