Linux 命令 总结

sort 命令:

-b 忽略每行前面开始出现的空格字符

-c 检查文件是否已经按照顺序排序

-f 排序时,忽略大小写字母

-n 按照数值的大小排序

-r 以相反的顺序来排序


sort 将文件的每一行作为一个单位,相互比较,比较原则是从首字母向后,依次按照ASXII码值进行比较,最后将它们按升序输出。


sort的-t选项和-k选项:

假如一个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是第二列来排序,如何利用sort实现。sort提供了-t选项,后面可以设定间隔符,指定了间隔符之后,就可以用-k来指定列数了。

sort -n -k 2 -t ':' facebook.txt


uniq:

-c 显示输出中,在每行行首加上本行在文件中出现的次数。

-d 只显示重复行

-u 只显示文件中不重复的各行


tr:

从标准输入设备读取数据,经过字符串转译后。


awk:

文件列之间用逗号分隔,读取第一列

awk -F "," '{print $1}'

awk "/name/ {print $1}" filename


find:

find . -name "*.txt" -o -name "*.pdf"

find . ! -name "*.txt"


指定搜索深度

find . -maxdepth 1 -type f (打印出当前目录的文件)


find . -type d -print (只列出所有目录 -type f:文件 -type:l 符号链接)


删除:删除当前目录下所有的swp文件

find . -type f -name "*.swp" -delete


find . -type f -user root -exec chown weber {} \;

注:{} 是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名。


find . -type f -mtime +10 -name "*.txt" - exec cp {} OLD \;


-exec ./command.sh {} \;


grep:

常用参数:

-o 只输出匹配的行

-v 只输出没有匹配的行

-c 统计文件中包含文件的次数

-n 打印匹配的行号

-i 搜索时忽略大小写

-l 只打印文件名


grep -r 'energywise' * //在当前目录及其子目录下搜索'energywise'行的文件

grep -l -r 'energywise' * //在当前目录及其子目录下搜索‘energywise’行的文件,但不显示匹配行,只显示匹配的文件


扩展 grep(grep -E 或者 egrep)

使用扩展grep的主要好处是增加了额外的正则表达式元字符集

egrep 'NW|NA' testfile

grep 'NW\|NA' testfile //对于标注grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E

grep -E 'NW|NA' testfile

不使用正则表达式

fgrep查询速度比grep命令快,但是不够灵活:它只能查找固定的文本,而不是规则正则表达式


xargs:

能够将输入数据转化为特定命令的命令行参数。

将多行输出转化为单行输出

cat file.txt | xargs //\n是多行文件间的定界符

将单行转换为多行输出:

cat single.txt | xargs -n 3 //-n指定每行显示的字段数 


tr:

echo 12345 | tr '0-9' '9876543210' 加密转化,替换对应字符

cat text | tr '\t' ' ' //制表符转空格

删除字符:

cat file | tr -d '0-9' //删除所有数字


将Tab转换为空格

expand test.txt > test1.txt


将文件按行并列显示

paste test.txt test1.txt

默认的定界符是制表符,可以使用-d指定明确定界符

paste file1 file2 -d ","


wc -l //统计行数

wc -w //统计单词数

wc -c //统计字符数


获取test.txt文件中第50-60行内容

< test.txt sed -n '50,60p'

显示剩余内存

free -m | grep cache | awk '/[0-9]/{print $4"  MB"}'


输入多行文字(ctrl+d退出):

cat > test.txt



cut 按列切分文本

cut -f2,4 filename 截取文件的第2列和第4列

cut -f3 --complement filename 去除文件第3列的所有列

cut -f2 -d ":" filename -d指定定界符


sed 文本替换:

sed ‘s/text/replace_text/’ file //替换每一行的第一处匹配的text

sed 's/text/replace_text/g' file //全局替换

sed -i 's/text/replace_text/g' file  默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i

移除空白行

sed '/^$/d' file


变量替换:已匹配的字符串通过标记&来引用

echo this is an example | sed 's/'


cat -n 编号文件内容再输出

cat -E 在结束行提示$


nl 将输出内容自动加上行号

nl -b a  不论是否有空行,都列出行号

nl -b t  空行则不显示行号


diff [参数]  [文件1或目录1] [文件2或目录2] 比较单个文件或目录内容

diff -b 不检查空格字符的不同

diff -B 不检查空白行的不同

diff -i 不检查大小写

diff -q 仅显示差异而不显示信息信息


awk:将外部变量传递给awk

VAR=10000

echo | awk - v VARIABLE=$VAR ‘{print VARIABLE}’

另一种传递外部变量方法:

var1="aaa"

var2="bbb"

echo | awk '{print v1,v2}' v1=$var1 v2=$var2

当输入来自文件时使用:

awk '{print v1, v2}' v1=$var1 v2=$var2 filename


awk 'BEGIN{a="100testa"; if(a ~ /^100*/{print "ok";})}'


awk中next语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。net语句一般用于多行合并


cat text.txt

a

b

c

d

e


awk 'NR%2==1{next}{print NR, $0}' text.txt

当行号除以2余1,就跳过当前行。下面的{print NR, $0} 页不会执行。


sed:

常见选项:

-n  使用安静模式。在一般sed的用法中,所有来自STDIN的资料一般会被列出到屏幕上。但如果加上-n参数后,则只有sed特殊处理那一行才会被列出来。

-e   直接在指令模式上进行sed的动作编辑

-i 直接修改读取的内容,而不是由屏幕输出


常用命令:

a  新增  a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

c  取代   c的后面可以接字串,这些字串可以取代n1,b2之间的行

d  删除    因为是删除,所以d后面通常不接任何东西

i  插入     i的后面可以接字串,这些字串会在新的一行出现(目前的上一行)

p  列印    将某个选择的资料印出。通常p会与参数sed -n 一起运作

s  取代   可以直接进行取代。通常这个s的动作可以搭配正则表示法,例如1,20s/old/new/g


删除某行 假设有个文件叫ab

sed  '1d' ab //删除第一行

sed '$d' ab  //删除最后一行

sed '1,2d' ab //删除第一行到第二行

sed '2,$d'  ab //删除第二行到最后一行


显示某一行:

sed -n '1p' ab //显示第一行

sed -n '$p' ab //显示最后一行

sed -n '1,2p' ab  //显示第一行到第二行

sed -n '2,$d' ab  //显示第2行到最后一行


使用模式进行查询:

sed -n '/ruby/p' 'ab'


sed '1a drink  tea ' ab //第一行后增加字符串"drink tea "

sed '1,3a drink tea' ab //第一行到第三行后增加字符串“drink tea ”

sed '1a drink tea\nor coffee ' ab //第一行后增加多行,使用换行符\n


替换一行后多行

sed '1c Hi' ab //第一行替换为Hi

sed '1,2c Hi' ab  //第一行到第二行替换为Hi


替换一行中的某部分

格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)

sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird

sed -n '/ruby/p' ab | sed 's/ruby//g' 删除ruby


插入:

sed -i '$a bye' ab #在文件ab中最后一行直接输入“bye”


awk调用shell,并将变量传递给shell:

在awk中,如果需要调用shell脚本/ 命令,则需要使用system()函数,如果需要将变量传递给被调用的shell,则写为system("sh my.sh " $var)。注意第二个引号前有一个空格。


Linux上删除空行的方法:

grep . data.txt

grep -v '^$' data.txt

grep '[^$]' data.txt


sed '/^$/d' data.txt

sed '/^\s*$/d' data.txt 这个命令还可将完全空格,tab等组成的空行删掉


awk NF data.txt #这个也可以将完全空格,tab等组成的空行删掉。awk '!/^$/' data.txt


tr -s '\n' < data.txt

这些删除空行的命令里,grep . data.txt 的效率貌似比较高的。


for i in *.html

do

mv $i ${i%.html}.htm

done

快速的将目录中所有的.html扩展名修改为.htm



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值