常见linux操作、spark上切词方式等

前言

当做自己的笔记本,这个文档不断更新,走出自己的舒适区。
实习小同学自取。

linux、python常用操作

一些小tric,提高效率的利器。

1.查找、分割

grep -e "aaaa" xxx.file | awk -F '\t' -v OFS='\t' '{print $1,$2}'

注意字符的转义
grep -E "CC|cc"xxx.file | awk -F '\t' -v OFS='\t' '{print "\""$1 "\"" "," }'
 | awk -F '\t' -v OFS='\t' '{print $1 }'
"4086"

2.按第2列去重:

cat xx.file | awk -F',' '!($2 in a){a[$2];print $0}'
加行号:
awk '{print $0" "FNR}' file.txt >result.txt

3.hdfs统计多份文件大小:

hadoop_xx fs -dus hdfs/xxx/Out/21* | awk  -F '\t' '{sum+=$2} END {print sum}'

4.看行数:

wc -l xxx.file
保留第5行之后:tail -n +5 file >   

5.nohup挂任务

nohup sh test.sh 1>re.out 2>re.log &

6.统计某列指标求和

grep xxx xxx.txt | awk  -F '\t' '{sum+=$3} END{print sum}'
awk -F '\t' '{arr[$1]=arr[$1]+$3}END{for(x in arr) print x,arr[x]}' pv_all

7.Git常见操作

git add ./*
git rm
git  commit -m "add"
git push origin HEAD:refs/for/[branch]     //branch 可以是master或是任意分支
pull = fetch + merge
将远程最新的代码同步到本地:git pull

commit之后还未合并,修改了代码想重新提交
1、查看之前的版本,选择要回滚至的commit id
 git log
2、回滚一下,但是不修改本地代码
git reset --soft  commit_id
3、重新提交

8.文件大小切割示例

执行split -C 1k info.txt 发现文件不是均分成1K但是文件的内容是完整的,所以大家懂了吧
执行split -l 10 -d -a 3 info.txt 1_ 可以看到-l把每个文件切成10行文件的后缀不是aa变成了000这是-d的效果,用数子后缀,-a 3是后缀3个,如果-a 4 后缀就变成了0000
split -l 200000 -d -a 3 xxx  xxx_part

9.sed,tr替换

sed 's/要被取代的字串/新的字串/g'
cat cooking.stackexchange.txt | sed -e "s/\([.\!?,'/()]\)/ \1 /g" | tr "[:upper:]" "[:lower:]" > cooking.preprocessed.txt
\([.\!?,’/()]\)表示“[.\!?,’/()]”这些符号为一组,\1表示选取第一组,/g前面没有新字符串表示去掉第一组的符号

10.ubuntu显卡驱动安装与更新便捷方式,装系统的自然踩过很过坑

(1)sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update  
(2)系统设置”(System Settings) --> “软件与更新”(Software & Updates),点击“额外驱动”(Additional Drivers)
(3)重启,nvidia-smi测试下   

11.linux连续操作

cd output && sh xxxt.sh

12.spyder 快捷键

spyder 快捷键  选中多行后: 
Ctrl + 1: 注释/反注释
Ctrl + 4/5: 块注释/块反注释
Ctrl + L: 跳转到行号
Tab/Shift + Tab: 代码缩进/反缩进
有的编辑器是Ctrl + ?注释

13.两个文件横向合并

paste [-d] file1 file2
选项与参数:
-d  :后面可以接分隔字符。默认是以 [tab] 来分隔的!
-   :如果 file 部分写成 - ,表示来自 standard input 的数据的意思。

14.vim替换

:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g

15.vim中tab符输入

插入模式或命令模式(编辑器底部的:提示符),键入 CTRL + V 然后TAB键 。
使用 CTRL + V 指示Vim应该接受下一个字符。即使是插入模式。

16.python编译pyc,注意去掉文件名版本号,高版本python会有这种情况

python -m py_compile
把pyc文件名的版本号去掉,不然会报错
xxx.cpython-35.pyc  -> xxx.pyc

17.ftp路径拼接

echo ftp://`hostname``pwd`

18.linux进行排序

-t指定分隔符,-k2指定第2列,-n以数字排序, -r降序
sort -t $'\t' -k2 -n -r 08.txt >08_sort

19.随机取n行

shuf train.txt -o test.txt -n 30
从train.txt文件中随机读取30行文本输出到test.txt

20.vim复制

按键4,yy,p,表示把当前之后4行复制粘贴

21.vim批量缩进

:10,100>
第10行至第100行缩进
:20,80<
第20行至第80行反缩进
spark上的开源切词

ansj,jieba,hanlp三种
在maven 项目工程下的 pom.xml文件中添加 点击import即可完成对三种的获取,关于版本,既然开源,可选择最新稳定的;

关于切词粒度和词性需求,选择不同的算子;

0)添加pom.xml中的依赖

<dependency>
    <groupId>org.ansj</groupId>
    <artifactId>ansj_seg</artifactId>
    <version>5.1.3</version>
</dependency>
<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.3.4</version>
</dependency>
<dependency>
    <groupId>com.huaban</groupId>
    <artifactId>jieba-analysis</artifactId>
    <version>1.0.2</version>
</dependency>

1)ansj

import org.ansj.domain.Term
import org.ansj.splitWord.analysis.ToAnalysis
import java.util.Arrays
def wordseg_by_ansj(input:String):String={
    val temp = ToAnalysis.parse(input)
    //val filter = FilterModifWord.modifResult(temp)
    val word = for(i <- Range(0,temp.size())) yield temp.get(i).getName
    val output = word.mkString("\t")
    return output
    }

2)jieba

import com.huaban.analysis.jieba.JiebaSegmenter
def wordseg_by_jieba(input:String):String={
    val word = new JiebaSegmenter().sentenceProcess(input)
    val output = word.toArray.mkString("\t")
    return output
    }

3)hanlp

import com.hankcs.hanlp.tokenizer.StandardTokenizer
def wordseg_by_hanlp(input:String):String={
    val word = StandardTokenizer.segment(input)
    val output = word.toArray.mkString("\t")
    return output
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值