
linux shell
bitcarmanlee
这个作者很懒,什么都没留下…
展开
-
一些常见的文件操作
这里,-F参数告诉grep使用固定字符串进行匹配,-x参数表示匹配整个行,-f参数表示从文件中获取模式列表,wc -l将输出两个文件共有的行数.需要注意的是,uniq的去重功能是针对连续多条,然后只剩唯一一条,所以要先排序再用uniq去重。这种方法潜在的问题是处理大量数据时效率可能会较低。原创 2024-08-21 16:52:07 · 268 阅读 · 0 评论 -
find命令用法小结
不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保存它了。甚至有时我需要一个我最初就没有创建的文件。但是,无论遇到什么困难,我知道在 POSIX 系统 上,总是有 find 命令可以帮助我。find 命令由 POSIX 规范 定义,它创建了一个用于衡量 POSIX 系统的开放标准,这包括 Linux、BSD 和 macOS。简而言之,只要你运行的是 Linux、BSD 或 macOS,那么 find 已经安装了。转载 2023-04-23 19:17:27 · 1265 阅读 · 1 评论 -
统计文本去重行数
常见的一个需求为:统计某个文本去重以后的行数可以使用如下命令:sort xxxfile | uniq | wc -l也可以使用如下命令sort -u xxxfile | wc -l简单解释一下其中sort -u的选项,解释如下 -u, --unique Unique keys. Suppress all lines that have a key that is equal to an already processed one. This optio原创 2021-01-02 22:05:02 · 499 阅读 · 0 评论 -
Linux查看文件以及文件夹个数
1.查看当前目录中文件个数ls -l |grep -c "^-"上面的命令中,ls -l显示出来的格式为-rw-r--r-- 1 wanglei staff 1.4K Aug 12 20:13 ? extends T 与 ? super T.md-rw-r--r-- 1 wanglei staff 6.7K Aug 12 19:34 Comparable 与 Comparator 比较.md-rw-r--r-- 1 wanglei staff 3.3K Aug 12 15原创 2020-08-15 10:57:35 · 22570 阅读 · 0 评论 -
解压tar.gz文件与tar.bz2文件
解压tar.gz文件与tar.bz2文件的命令是不一样的。其中解压tar.gz的命令为tar -zxvf ×××.tar.gz解压tar.bz2的命令为tar -jxvf ×××.tar.bz2主要区别在于,一个参数为-z,一个参数为-j。-z即询问是否有gzip属性,-j询问是否有bzip2属性...原创 2020-05-11 14:51:50 · 574 阅读 · 1 评论 -
ubuntu修改源为阿里云
1.备份先备份原有的配置,以防不测。sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2.修改配置讲sources.list原有内容全部删除,加上如下配置deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restrict原创 2020-05-08 17:37:32 · 956 阅读 · 0 评论 -
linux shell用变量的值作为新变量名
实例如下:path1="123abc"i=1pathstr=path$iecho $pathstr# 结果为path1# 想将path1替换为123abcpath=`eval echo '$'"$pathstr"`echo $patheval命令小结:eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两...原创 2020-01-20 09:52:41 · 2639 阅读 · 0 评论 -
几个常用的shell脚本
1.选择文件大小大于某个值的文件有一个文件夹里有若干文件,打印文件大小大于300B的文件名。#!/bin/bashfor file in `ls -l | awk '$5>300 {print $9}'`do echo $filedone2.某个文件夹中找到.py结尾的文件取10个,并取所有文件的第一行#!/bin/bashfor file in `find dir -type f -n原创 2017-05-21 22:41:45 · 731 阅读 · 0 评论 -
ubuntu修改默认root密码
想在自己的ubuntu里做su root的操作,猛然发现自己不知道root密码,然后也意识到,好像自己也一直没有给ubuntu设置过root密码。特意搜了一把,发现ubuntu的默认root密码是随机的,每次开机都会有一个新的root密码。为了设置新的root密码,可以做如下操作: 1.输入sudo passwd命令,然后会提示输入当前用户的密码。 2.按enter键,终端会提示输入新的密码并确原创 2017-11-24 10:43:51 · 26003 阅读 · 3 评论 -
通过释放cache内存解决ubuntu死机问题
1.ubuntu老死机工作机器是ubuntu系统,配有16G的物理内存。按理说这个内存量已经不小了,但是同时还运行了一个windows虚拟机,所以机器的资源会略显紧张。每次系统运行不了多少时间,多则三五天,少则一两天,系统就卡死不动了。。。任何操作都没法解决这个问题,每次只能重启大法,长按power键,重启机器。终于某一次一天之内重启两次以后,本人实在受不了了,下决心要解决这个问题。。根据之前的几次原创 2017-12-07 18:35:46 · 8676 阅读 · 0 评论 -
linux shell中实现字符串反转的几种简单方法
1.使用rev命令7040:~$ echo "123456" | rev6543212.使用python工具7040:~$ echo "123456" | python -c 'print raw_input()[::-1]'654321tips: 1.python中实现字符串反转非常容易,[::-1]就可以。具体原理为Extended Slices,可以参考 https://docs.py原创 2017-12-28 10:21:32 · 7816 阅读 · 0 评论 -
linux两个文件交集,合并,去重
1.两个文件的交集,并集cat file1 file2 | sort | uniq > resultcat file1 file2 | sort | uniq -d > resultcat file1 file2 | sort | uniq -u > result第一条命名求两个文件的并集,如果有重复的行只保留一行。 第二条命令求两个文件的交集,即两个文件中都有...原创 2018-09-05 16:25:54 · 15880 阅读 · 0 评论 -
windows传文件到linux
公司配的机器操作系统是ubuntu,自己在ubuntu上面用VirtualBox装了个windows的虚拟机。有时候需要从windows传一些文件到ubuntu上面。最开始使用的是虚拟机的share功能。后来使用一段时间以后发现,share功能很多时候并不是很好用。所以干脆在windows上装一个ssh工具用来传输文件。1.确认ubuntu的ssh-server开启ssh是分客户端与服务端的。...原创 2018-10-15 18:11:56 · 1312 阅读 · 0 评论 -
ubuntu .7z解压缩
kaggle上很多数据集都是.7z的格式。下载过来以后第一步是需要解压。首先需要安装p7zipsudo apt-get install p7zip-full然后解压文件:7z x xxx.7z -r -o localdir其中,x标识解压缩文件,并按原始目录解压-r 表示递归所有的子文件夹当然最简单的方式就是7z x xxx.7z这样直接将xxx.7z文件解压到当前路径...原创 2018-11-20 14:57:40 · 1171 阅读 · 0 评论 -
shell 查看空行与删除空行
文件中经常会出现一些空行,很多场合下我们需要对这些空行进行处理,下面稍微总结一下处理空行的一些办法。1.查看空行行号使用linux文本三剑客来处理。1.1 grepgrep -n '^\s*$' xxx其中,-n表示line-number,会输出行号1.2 awkawk '/^\s*$/{print NR}' xxx1.3 sedsed -n '/^\s*$/=' xxx...原创 2019-04-08 22:42:22 · 11175 阅读 · 0 评论 -
linux shell sort多字段排序
需求:对第一列按数值大小排序,如果第一列相同对第四列按数值大小排序代码:sort -t $'\t' -k 1n -k 4nr xxxfile-k选项的具体语法格式要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下:[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]...原创 2019-07-16 11:41:22 · 7188 阅读 · 1 评论 -
linux查看进程占用内存与ps命令
1.查看内存方法1首先通过ps查找进程idps -ef | grep redismi 12455 30314 0 16:34 pts/26 00:00:00 redis-climi 17963 17046 0 17:34 pts/28 00:00:00 grep --color=auto redisredis 31087 1366 0 8月...原创 2019-08-29 17:51:08 · 3567 阅读 · 0 评论 -
将netcat-openbsd替换成为netcat-traditional
ubuntu里默认的nc命令指向的是netcat-openbsd。因为netcat-openbsd的用法与netcat-traditional用法有所不同,所以想切换到nc的传统版本中。1.update-alternatives 命令update-alternatives是Debian系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。update-alte原创 2017-05-15 20:33:30 · 3078 阅读 · 0 评论 -
linux 查看端口占用命令 亲测可用
端口是系统非常重要的一个东东,我们经常需要查看哪个进程占用了哪个端口,或者哪个端口被哪个进程占用。废话不多说,直接上干货,教大家怎样查看系统端口占用情况。方法一: 1.先用ps -ef | grep xxx(某个进程),可以查看某个进程的pid。 2.再用netstat -anp | grep pid号,可以查看到该进程占用的端口号! 方法二: 直接用lsof命令可以查看端口使用情况!原创 2017-04-15 17:56:10 · 9147 阅读 · 0 评论 -
shell判断文件与字符串
假设有如下文件:#!/bin/shmyPath="/home/xxx/path"myFile="/home/xxx/xxx.log"-d 参数判断$myPath是否存在if [ ! -d "$myPath"]; thenmkdir "$myPath"fi-f参数判断$myFile是否存在if [ ! -f "$myFile" ]; thentouch "$myFile"fi-x 参数判断$原创 2017-04-28 11:31:16 · 1389 阅读 · 0 评论 -
linux shell将字符串分割数组
经常用将字符串分割为数组的需求。在shell中常用的方式为以下两种#!/bin/bashfunction split_1(){ x="a,b,c,d" OLD_IFS="$IFS" IFS="," array=($x) IFS="$OLD_IFS" for each in ${array[*]} do echo原创 2016-03-24 18:33:21 · 28994 阅读 · 0 评论 -
shell判断字符串为空
shell中判断字符串为空的几种方式,一一列举#!/bin/bashtest_str=""if [ "$test_str" = "" ];then echo "NULL!"fiif [ x"$test_str" = x ];then echo "NULL!"fiif [ -z "$test_str" ]; then echo "NULL!"原创 2016-03-25 10:45:12 · 2439 阅读 · 0 评论 -
shell 逐行读取文件
很常见的需求,话不多说,直接上代码#!/bin/bash#cat出来,for循环function f1(){ IFS="" for line in `cat test.txt` do echo $line done echo '------------------'}#文章重定向给read处理function f2()原创 2016-03-25 10:57:34 · 1572 阅读 · 0 评论 -
shell 字符串操作
求字符串长度:$ x="a:b:c:"方法一:$ echo ${#x}6方法二:用expr命令$ expr length $x6PS:expr属于外部命令,一般来说外部命令比内部命令要慢很多$ time for i in $(seq 1 10000);do len=${#x};donereal 0m0.087suser 0m0.0原创 2016-03-24 17:04:09 · 481 阅读 · 0 评论 -
linux top命令VIRT,RES,SHR,DATA的含义
VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10转载 2016-04-07 11:12:31 · 2059 阅读 · 0 评论 -
linux 中文乱码
下来搜狐实验室一些新闻语料做分析,结果打开发现其他标签都正常,就<content><content>标签内容不正常,全是乱码。因此估计十有八九是编码问题。上网找了下linux里怎么解决中文乱码的问题。其实挺简单,用iconv命令就可以轻松搞定。linux里默认的字符集编码方式是utf-8,而下载的内容的编码格式应该是gbk,所以用如下命令:cat news.allsites.1120806.txt原创 2016-04-19 16:05:19 · 1234 阅读 · 0 评论 -
linux shell 数字计算详解
代码中免不了要进行各种数据计算。抛开科学计算不提,普通的计算占地,百分比,同比,环比等需求就很常见。linux shell中进行数字计算,主要有如下几种方式:1.bcbc是比较常用的linux计算工具了,而且支持浮点运算:[webopa@namenode-backup expensive_user]$ a=`echo 1+1 | bc`[webopa@namenode-backup expensi原创 2016-05-05 17:52:20 · 9630 阅读 · 0 评论 -
linux 统计文件的个数
查看文件夹下的文件个数(当前目录与子目录)find ./ -type f | wc -lls -lR | grep "^-" | wc -l如果只是查找当前文件夹不递归find . -maxdepth 1 -type d | wc -l原创 2016-04-21 21:23:09 · 811 阅读 · 0 评论 -
linux 守护进程
Linux 守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服转载 2016-04-21 21:24:41 · 917 阅读 · 0 评论 -
linux mac tree 命令 总结
在写项目相关的解释文档或者说明文档或者需求文档的时候,经常需要列出项目代码的树状结构。tree命令就能很好的满足我们这个小小的需求linux与mac中的tree都不是自带的,需要自行安装。如果不会安装,请自行google在linux或者mac中怎样安装软件即可。。。1.最简单的方式最简单的使用方式就是直接输入tree命令了 :$ tree.├── get_user_order.sh├── mr原创 2016-05-19 11:27:59 · 881 阅读 · 0 评论 -
linux 删除乱码文件
新建文件或者保存文件时候,很容易输入乱码字符,导致最后生成的文件名中有各种奇怪符号。当文件名包含这些符号的时候,我们就无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件。首先,我们要取得文件的i节点号。通过简单的ls -i 命令就可以得到文件的i节点号。然后,使用find命令将文件名传递给rm命令。e原创 2016-07-19 17:35:31 · 851 阅读 · 0 评论 -
批量重命名文件名
批量重命名文件名是常见的需求。例如我们这有三个文件都是以.txt结尾,现在我们想重命名为.csv文件。以下给同学们介绍如下两种方式。1.使用mv命令话不多少,直接上代码#!/bin/bashfor file in `ls`do newfile=`echo $file | sed 's/\.txt/\.csv/'` mv $file $newfiledonemv的方式如上。如果不是原创 2016-10-08 22:46:25 · 4646 阅读 · 0 评论 -
shell 封装mysql查询
有时候需要将sql查询封装在shell脚本中,然后将查询结果导出存入文本后续再做进一步处理。对于这种常见需求,特意做了个实例,代码已经通过测试,同学们可以大胆使用。!/bin/bashhost=xxxuser=xxxpassword=xxxport=xxxdbname=xxxsql_conn_str="-h${host} -P${port} -u${user} -p${password} $原创 2016-09-23 17:27:04 · 1907 阅读 · 0 评论 -
编写可靠shell脚本的八个建议
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了。1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同。 我见过/usr/bin/env bash,也见过/bin/bash,还有/转载 2016-09-25 14:30:40 · 2350 阅读 · 1 评论 -
统计某个字符串出现的次数
经常需要统计一个字符串出现的次数。常用的有如下两种方式:1.VIMvim是linux世界中的利器。用vim打开文件,然后输入::%s/objectStr//gn图中的例子就是统计文本中”|”字符串出现的次数。2.GREPgrep也是linux世界中的利器。grep -o "objectStr" filename | wc -l通过这种方式也能达到目的。另外附上几个grep常用的参数: -c 只原创 2017-02-17 14:46:30 · 12265 阅读 · 0 评论 -
shell 数组详解
数组是shell中常用的一个东东。现在对shell中的数组做一个小结,方便以后使用。1.初始化数组初始化数组有两种方式,直接上代码array=(0 1 2)arr[0]=0arr[1]=1arr[2]=2这两种方式都能初始化数组,达到的效果是一致的。需要注意的一点是,用第二种方式初始化的时候,不需要先声明arr,否则shell运行的时候会提示找不到arr命令。2.求数组的长度echo ${#a原创 2017-03-01 12:23:45 · 1812 阅读 · 0 评论 -
shell 计算代码运行时间
做性能测试的时候,经常需要得到程序运行时间。写了个简答的shell脚本,供同学们参考。#!/bin/bashfunction handle(){ start=$(date +%s%N) start_ms=${start:0:16} awk '{a[$1]++} END{print length(a)}' breakfast_all receptions_all原创 2016-03-23 18:07:49 · 10407 阅读 · 3 评论