Linux/MacOS/Windows常用的有用的命令组合

 

 

一、Linux

1.拷贝某个目录下的所有文件,但是排除指定的目录

现有目录:[source] 和 [dest]

source
├── dir1
├── dir2
├── dir3
└── dir4

dest为空

执行下面命令:

 ls source/ | grep -v dir2 | xargs -i cp -rf source/{} dest/

再来看两个目录:


root@zsup:/home/test_shell# tree source
source
├── dir1
├── dir2
├── dir3
└── dir4

4 directories, 0 files
root@zsup:/home/test_shell# tree dest
dest
├── dir1
├── dir3
└── dir4

3 directories, 0 files

满足需求。Nice!

二、MacOS

三、Windows

至于MacOS和Windows下的,用到的时候再去更新啦。现在主要在Linux下搞项目。有些shell语句真的能起到事半功倍的效果。总之边用边学,一定要多总结,多思考。

<think>嗯,用户让我介绍一下Linux常用的文本处理命令,我需要好好整理一下。首先,我得想想自己常用的那些命令,比如cat、grep、sed、awk这些肯定是必须的。然后可能还有像head、tail、sort、uniq、cut、tr、wc、diff、find这些,都是处理文本时经常会用到的工具。 不过用户可能对Linux有一定了解,但可能还不熟悉具体的命令,所以需要解释清楚每个命令的基本用途和常见例子。比如cat不仅仅是查看文件,还可以合并文件,或者用>重定向来创建新文件。然后grep的搜索功能,包括正则表达式,可能需要提到-i忽略大小写,-r递归搜索目录,这些常用选项。 sed和awk可能稍微复杂一点,但用户可能想知道基本的用法,比如sed的替换操作,或者awk处理字段。记得举例子,比如打印某列,或者计算总和。head和tail用来查看文件的开头或结尾,特别是tail -f监控日志,这个很实用。 sort排序和uniq去重,通常结合使用,比如排序后再去重。cut按列切割,比如用-f指定字段,-d指定分隔符。tr用来替换或删除字符,比如大小写转换。wc统计行数、字数,diff比较文件差异,find查找文件并执行操作,比如结合grep搜索文件内容。 另外,可能需要考虑用户的实际使用场景,比如处理日志文件、数据清洗、快速查找内容等等,所以例子要贴近实际应用。比如用grep过滤日志中的错误信息,用awk提取特定列的数据进行统计,或者用sed批量替换配置文件中的某些值。 还要注意命令组合使用,比如管道符把多个命令连接起来,发挥更强大的功能。比如cat file | grep "error" | awk '{print $3}' | sort | uniq -c这样的组合,可能用来统计错误出现的次数。 是不是有些命令可能被遗漏了?比如paste合并文件行,或者split分割文件?不过可能这些属于稍微进阶一点的,用户如果只需要常用的话,可能先不提及。或者提一下但不详细展开。 另外,可能需要提醒用户注意命令的参数不同版本可能会有差异,比如有些选项在LinuxmacOS中可能不同,特别是BSD和GNU版本的区别,比如在macOS上使用可能需要安装GNU版本的工具。不过这可能超出当前问题的范围,可以暂时不提,除非用户特别问到。 总之,要确保覆盖最常用命令,每个命令给出基本用法和例子,让用户能快速理解并应用。结构上可以分点列出,每个命令名称作为小标题,然后用途和例子。最后可能再举一个综合的例子,展示如何组合使用这些命令解决实际问题,这样用户能更好地理解命令之间的协作。 现在需要检查有没有遗漏的重要命令,或者有没有错误的地方。比如,是否提到了正则表达式在grep和sed中的应用?可能应该提到,因为这是处理文本的强大工具。还有是否提到了重定向和管道的重要性,这些是命令行处理文本的核心概念。 嗯,这样应该比较全面了。接下来按照这个思路组织内容,确保清晰易懂,例子简单明了。</think>以下是 Linux常用的文本处理命令及其典型用法,适合快速处理日志、配置文件、数据提取等场景: --- ### **1. `cat` - 查看/合并文件** - **用途**:显示文件内容、合并多个文件、创建新文件。 - **常用操作**: ```bash cat file.txt # 查看文件内容 cat file1.txt file2.txt > merged.txt # 合并文件 cat > newfile.txt # 输入内容并保存(Ctrl+D 结束) ``` --- ### **2. `grep` - 文本搜索** - **用途**:基于正则表达式过滤文本。 - **常用参数**: ```bash grep "error" file.log # 查找包含 "error" 的行 grep -i "warning" file.log # 忽略大小写搜索 grep -r "pattern" /path # 递归搜索目录下的文件 grep -v "success" data.txt # 排除包含 "success" 的行 ``` --- ### **3. `sed` - 流编辑器** - **用途**:批量替换、删除、提取文本。 - **示例**: ```bash sed 's/old/new/g' file.txt # 替换所有 "old" 为 "new" sed '/pattern/d' file.txt # 删除匹配的行 sed -n '5,10p' file.txt # 仅打印 5-10 行 ``` --- ### **4. `awk` - 文本分析工具** - **用途**:按列处理结构化数据(如日志、CSV)。 - **示例**: ```bash awk '{print $1}' data.txt # 打印第一列 awk -F',' '{print $2}' data.csv # 按逗号分列后取第二列 awk '$3 > 100 {print $0}' data.txt # 输出第三列大于100的行 ``` --- ### **5. `head` / `tail` - 查看文件首尾** - **用途**: ```bash head -n 5 file.txt # 显示前5行 tail -n 10 file.log # 显示最后10行 tail -f server.log # 实时追踪日志更新(调试常用) ``` --- ### **6. `sort` - 排序** - **用途**:对文本行排序。 - **示例**: ```bash sort file.txt # 默认按字典序排序 sort -n data.txt # 按数值大小排序(如数字) sort -r file.txt # 逆序排序 ``` --- ### **7. `uniq` - 去重** - **用途**:去除连续重复行,常与 `sort` 配合。 - **示例**: ```bash sort file.txt | uniq # 去重(需先排序) uniq -c file.txt # 统计重复次数 ``` --- ### **8. `cut` - 按列切割** - **用途**:提取指定列。 - **示例**: ```bash cut -d',' -f1,3 data.csv # 按逗号分列,取第1、3列 cut -c1-5 file.txt # 提取每行前5个字符 ``` --- ### **9. `tr` - 字符替换/删除** - **用途**:转换或删除字符。 - **示例**: ```bash echo "HELLO" | tr 'A-Z' 'a-z' # 转小写(输出:hello) cat file.txt | tr -d '\r' # 删除 Windows 换行符(\r) ``` --- ### **10. `wc` - 统计行数/字数** - **用途**:统计文本信息。 - **示例**: ```bash wc -l file.txt # 统计行数 wc -w file.txt # 统计单词数 ``` --- ### **11. `diff` - 文件差异对比** - **用途**:比较两个文件内容差异。 ```bash diff file1.txt file2.txt ``` --- ### **12. `find` + 文本处理** - **用途**:查找文件并处理。 - **示例**: ```bash find /var/log -name "*.log" -exec grep "error" {} \; # 在所有.log文件中搜索"error" ``` --- ### **组合使用示例** ```bash # 统计日志中不同错误类型出现的次数: grep "ERROR" app.log | awk '{print $5}' | sort | uniq -c | sort -nr ``` - **步骤解析**: 1. `grep` 过滤出包含 "ERROR" 的行。 2. `awk` 提取第5列(假设错误类型在第5列)。 3. `sort` 排序以便 `uniq` 去重。 4. `uniq -c` 统计每种错误出现次数。 5. `sort -nr` 按次数从高到低排序。 --- 掌握这些命令可大幅提升 Linux 下的文本处理效率!可根据需求灵活组合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu-Eleven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值