linux常用命令

标签: linux


xargs

将数据作为命令的参数传入,默认命令是echo, 默认定界符是 空格。参数如下:

  • -n num 设置多行输出
  • -I str 设置代替符号,主要用于数据的插入位置
  • -d str 设置定界符,用于划分参数
  • 还有更多参数参考help

批量改文件名例子:

ls | grep myfile | xargs -n 1 -I {} mv {} {}andyourfile

若要修改文本内容而不是简单拼接,可参考sed或者awk


管道符 “|” 与 xargs区别

管道是实现:“将前面的标准输出作为后面的标准输入”

xargs是实现:“将标准输入作为命令的参数”

也就说要将前面命令的结果作为参数传入的话必须用到xargs,而作为要被处理的数据来输入的话就不用。

不太准确地说,结果放在命令前的只用管道符就可以,放在命令后的要用xargs

echo 'abc' | grep a # 'abc'放在grep前,只用管道
echo '--help' | xargs cat # '--help' 放在 cat 后,要用xargs

grep

找出匹配正则的行,要注意的是表达式分为basic与扩展正则两种
grep参考这里

并且grep不支持捕获组,需要捕获的需要用到下面的awk或则sed

参数如下:

  • -E: 使用标准的正则
  • -v: 搜索结果取非
  • -n: 输出匹配的行号
  • -o: 输出匹配范式的内容

awk

强大使用的命令,用于对文本、数据处理。awk参考这里

常用参数:

  • -F str: 定义定界符
  • -v var=value: 定义{...}里使用的变量

一个批量改文件名的例子:

有一堆文件名如abc_1_abc.png,现将中间的数字加2

ls | grep abc_* | sort -t_ -nk2 -r | awk -F_ '{printf "mv %s %s_%d_%s\n", $0, $1, $2 + 2, $3}' | bash
## sort 用于倒序,防止覆盖文件,

sed

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed参考这里


其他

到行首: ctrl + a
到行尾:ctrl + e
取消当前命令: ctrl + c
删除光标前的字符:ctrl + u


字符串操作

http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html

你可能感兴趣的:(linux常用命令)