Linux命令行的日常使用技术
  • 作者:zhijie
  • 时间:2023-01-31

  处理文件和数据

  要在当前目录中按名称定位文件,find 。 -iname ’*something*‘(或者相类似的)。要按名称查找任何地方的文件,使用 locate something(但请记住,updatedb 可能还没有索引最近创建的文件)。

  对于源代码或数据文件进行的常规搜索(要比 grep -r 更高级),使用 ag。

  要将 HTML 转成文本:lynx -dump -stdin。

  对于 Markdown、HTML,以及各种类型的文档转换,可以试试 pandoc。

  如果你必须处理 XML,xmlstarlet 虽然有点老旧,但是很好用。

  对于 JSON,使用jq。

  对于 Excel 或 CSV 文件,csvkit 提供了 in2csv,csvcut,csvjoin,csvgrep 等工具。

  对于亚马逊 S3 ,s3cmd 会很方便,而 s4cmd 则更快速。亚马逊的 aws 则是其它 AWS 相关任务的必备。

  掌握 sort 和 uniq,包括 uniq 的 -u 和 -d 选项——参见下面的单行程序。

  掌握 cut,paste 和 join,它们用于处理文本文件。很多人会使用 cut,但常常忘了 join。

  了解 tee,它会将 stdin 同时复制到一个文件和 stdout,如 ls -al | tee file.txt。

  知道 locale 会以微妙的方式对命令行工具产生大量的影响,包括排序的顺序(整理)以及性能。大多数安装好的 Linux 会设置 LANG 或其它 locale 环境变量为本地设置,比如像 US English。但是,你要明白,如果改变了本地环境,那么排序也将改变。而且 i18n 过程会让排序或其它命令的运行慢好多倍。在某些情形中(如像下面那样的设置操作或唯一性操作),你可以安全地整个忽略缓慢的 i18n 过程,然后使用传统的基于字节的排序顺序 export LC_ALL=C。

  了解基本的改动数据的 awk 和 sed 技能。例如,计算某个文本文件第三列所有数字的和:awk ’{ x += $3 } END { print x }‘。这可能比 Python 的同等操作要快3倍,而且要短3倍。

  在一个或多个文件中,替换所有出现在特定地方的某个字符串:

  perl -pi.bak -e ’s/old-string/new-string/g‘my-files-*.txt

  要立即根据某个模式对大量文件重命名,使用 rename。对于复杂的重命名,repren 可以帮助你达成。

  # 恢复备份文件 foo.bak -》 foo:

  rename ’s/\.bak$//‘*.bak

  # 完整的文件名、目录名 foo -》 bar:

  repren --full --preserve-case--from foo --to bar 。

  使用 shuf 来从某个文件中打乱或随机选择行。

  了解 sort 的选项。知道这些键是怎么工作的(-t和-k)。特别是,注意你需要写-k1,1来只通过第一个字段排序;-k1意味着根据整行排序。

  稳定排序(sort -s)会很有用。例如,要首先按字段2排序,然后再按字段1排序,你可以使用sort -k1,1 | sort -s -k2,2

  如果你曾经需要在 Bash 命令行中写一个水平制表符(如,用于 -t 参数的排序),按ctrl-v [Tab],或者写$’\t‘(后面的更好,因为你可以复制/粘贴)。

  对源代码进行补丁的标准工具是 diff 和 patch。 用 diffstat 来统计 diff 情况。注意 diff -r可以用于整个目录,所以可以用 diff -r tree1 tree2 | diffstat 来统计(两个目录的)差异。

  对于二进制文件,使用 hd 进行简单十六进制转储,以及 bvi 用于二进制编辑。

  还是用于二进制文件,strings(加上 grep 等)可以让你找出一点文本。

  对于二进制文件的差异(delta 压缩),可以使用 xdelta3。

  要转换文本编码,试试 iconv 吧,或者对于更高级的用途使用 uconv;它支持一些高级的 Unicode 的东西。例如,这个命令可以转换为小写并移除所有重音符号(通过扩展和丢弃):

  uconv -f utf-8-t utf-8-x ’::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] 》; ::Any-NFC; ‘《 input.txt 》 output.txt

  要将文件分割成几个部分,来看看 split(按大小分割)和 csplit(按格式分割)吧。

  使用 zless,zmore,zcat 和 zgrep 来操作压缩文件。

 3/6   首页 上一页 1 2 3 4 5 6 下一页 尾页
相关推荐
用户评论区