c 给定字符串中查找_工作中hive&linux常用操作(一)

9月底离职到上海某厂做大数据分析,目前从事大数据报表开发、监控以及需求分析。

去之前对上海充满无限向往,可以感受大上海的繁华了~结果TMD连续上班7天每天10点左右下班,wtffffff。国庆回家休息,最怕朋友问我上海好不好玩。

国庆结束回上海上班,想着会轻松一点,结果下班从10点变成11点了,fuck。。。


言归正传,这次写文章的目的是记录一下hive&linux工作中常用的操作,也算是复习一下。

LINUX基本操作

vim快速操作 - Linux程 - 博客园

#一、cat操作命令

cat主要有三大功能:

1.一次显示整个文件 $cat filename

2.从键盘创建一个文件 $cat > filename 只能创建新文件,不能编辑已有文件

3.将几个文件合并为一个文件 $cat file1 file2 > file

#cat具体命令格式:cat [-AbeEnstTuv] [--help] [--version] fileName

-n :由1开始对所有输出的行数编号

-b :和-n相似,只不过对于空白行不编号

-s :当遇到有连续两行以上的空白行,就代换为一行的空白行

范例:

cat -n linuxfile1 > linuxfile2 #把linuxfile1的档案内容加上行号后输入linuxfile2这个档案里

cat -b linuxfile1 linuxfile2 >> linuxfile3 #把linuxfile1和linuxfile2的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3里。

cat /dev/null > /etc/test.txt #此为清空/etc/test.txt档案内容

#二、linux中各种引号的含义及使用方法

``:反引号,获取执行命令的结果

'': 去掉所有符号的特殊含义

"": 不去掉符号的特殊含义

#三、touch操作命令

1.一次创建单个或多个文件

touch filename1 filename2 filename3

2.强制避免使用touch命令创建新文件

touch -c filename

#四、mutt操作命令

mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<邮件文件>][-F<配置文件>][-H<邮件草稿>][-i<文件>][-m<类型>][-s<主题>][邮件地址]

参数:

-a<文件> 在邮件中加上附加文件。

-b<地址> 指定密件副本的收信人地址。

-c<地址> 指定副本的收信人地址。

-f<邮件文件> 指定要载入的邮件文件。

-F<配置文件> 指定mutt程序的设置文件,而不读取预设的.muttrc文件。

-h 显示帮助。

-H<邮件草稿> 将指定的邮件草稿送出。

-i<文件> 将指定文件插入邮件内文中。

-m<类型> 指定预设的邮件信箱类型。

-n 不要去读取程序培植文件(/etc/Muttrc)。

-p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。

-R 以只读的方式开启邮件文件。

-s<主题> 指定邮件的主题。

-v 显示mutt的版本信息以及当初编译此文件时所给予的参数。

-x 模拟mailx的编辑方式。

-z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。

#五、linux中各种括号的使用

1.单小括号()

命令组,在括号中的命令列表将会作为一个子shell来运行。

括号中多个命令之间用分号隔开

2.双小括号(())

在双括号结构中,所有表达式可以像c++一样,如:c++

在双括号结构中,所有变量可以不加入$前缀

双括号可以进行逻辑运算,四则运算

3.$()和``的比较

在bash中,$()和``都是用来作命令替换的

虽然在操作上两者都是达到相应的效果,但是建议使用$(),理由如下:

``很容易与"搞混,而$()比较直观

$()的弊端是并非所有类unix都支持这种方式

4.${}变量替换

一般情况下,$var和${var}是没有区别的,但是${}会比较精确的界定变量名称的范围

举例:

A = linux

echo ${A}B

linuxB

先赋值一个变量为一个路径:

file = /dir1/dir2/dir3/my.file.txt

echo ${file#*/} dir1/dir2/dir3/my.file.txt 拿掉第一条/及其左边的字符串

echo ${file##*/} my.file.txt 拿掉最后一条/及其左边的字符串

echo ${file#*.} file.txt 拿掉第一个.及其左边的字符串

echo ${file##*.} txt 拿掉最后一个.及其左边的字符串

echo ${file%/*} /dir1/dir2/dir3 拿掉最后一条/及其右边的字符串

echo ${file%%/*} 空值 拿掉第一条/及其右边的字符串

echo ${file%.*} /dir1/dir2/dir3/my.file 拿掉最后一个.及其右边的字符串

echo ${file%%.*} /dir1/dir2/dir3/my 拿掉第一个.及其右边的字符串

# 是去掉左边(在键盘上 # 在 $ 之左边)

% 是去掉右边(在键盘上 % 在 $ 之右边)

单一符号是最小匹配;两个符号是最大匹配

*是用来匹配不要的字符,也就是想要去掉的那部分

还有指定字符分隔号,与*配合,决定取哪部分

取子串及替换

echo ${file:0:5} /dir1 提取最左边的5个字节

echo ${file:5:5} /dir2 提取左起第五个字节右边连续五个字节

echo ${file/dir/path} /path1/dir2/dir3/my.file.txt 将第一个dir替换成path

echo ${file//dir/path} /path1/path2/path3/my.file.txt 将所有dir替换成path

echo ${#file} 27 获取变量长度

替换结构

${var:-string} 若变量var为空,则在命令行中用string替换

${var:=string} 若变量var为空,则string会赋值给var

${var:+string} 若变量var不为空,则在命令行中用string替换

${var:?string} 若变量var不为空,则作用变量的值来替换string;若变量var为空,则把string输出到标准错误中,并从脚本退出。可以利用此特性来检查是否设置了变量的值。

tips:在上面替换结构中string不一定是常值,可用另外一个变量的值或者一种命令输出

匹配模式替换结构

${variable%pattern} shell在variable中查找,看它是否匹配给定的模式pattern结尾,

如果是,就从命令行把variable中的内容去掉右边最短的匹配模式

${variable%%pattern}:shell在variable中查找,看它是否匹配给定的模式pattern结尾,

如果是,就从命令行把variable中的内容去掉右边最长的匹配模式

${variable#pattern}:shell在variable中查找,看它是否匹配给定的模式pattern开始,

如果是,就从命令行把variable中的内容去掉左边最短的匹配模式

${variable##pattern}:shell在variable中查找,看它是否匹配给定的模式pattern结尾,

如果是,就从命令行把variable中的内容去掉右边最长的匹配模式

5.单中括号[]

可以使用比较运算符==和!=,用于字符串比较不可用于整数比较

6.双中括号[[]]

[[ ]] 结构比[ ]结构更加通用

使用[[]]条件判断结构,而不是[],能够防止脚本中的许多逻辑错误。比如&&、||、<和>

能够正常存在于[[]]条件判断结构中,但是在[]中会报错

HIVE操作使用指南-个人版

1.变量篇

#定义变量方法

这个比较基础,一般用=来赋值变量

#引用变量方法

#使用${}方式引用变量

2.日期格式篇

#日期格式 date <+时间日期格式> +和格式之间没有空格

date +"%Y-%m-%d" 输出结果:2019-9-26 #当前日期

date -d "+1 day ago" +"%Y-%m-%d" 输出结果:2019-9-25 #前一天日期

date -d "-1 day ago" +"%Y-%m-%d" 输出结果:2019-9-27 #后一天日期

#计算一组命令花费多少时间

start=$(date +"%d") #以时间戳类型保存当前时间作为起始时间

//执行需要计算的命令

end=$(date +"%d") #以时间戳类型保存当前时间作为结束时间

difference=$((end-start)) #相减结果就是命令执行完需要的时间

举例:

day=`date +%Y-%m-%d` 输出结果:2019-9-26

lastday=`date -d "${day} 1 day ago" +%Y-%m-%d` 输出结果:2019-9-25


最近沉迷S9无法自拔,每天晚上8点看到凌晨2点,黑眼圈都起来了。于是网购了男士护肤品,给点心理安慰吧。

one punch man真真真好看,要向埼玉老师学习,努力锻炼直到头秃hhhhh

你可能感兴趣的:(c,给定字符串中查找)