Linux命令练习第二关(7)

本文介绍在Linux环境下如何使用cut、sed、awk及grep等工具处理文本文件中的特定字符串,包括过滤和提取具体字段的方法。

(13)已知如下命令及结果:

[root@ianLinux ~]# echo "I am Ian,myqq is 123456">>ianTest.txt
[root@ianLinux ~]# cat ianTest.txt 
I am Ian,myqq is 123456

a.现在需要从文件中过滤出“Ian”和”123456”字符串,请给出命令。
b.如果需要从文件中过滤“Ian,123456”字符串,请再给出命令。

解答:

无“,”处理

先来看看上面内容中没有“,”时的处理方法:

[root@ianLinux ~]# cat ianTest.txt 
I am Ian myqq is 123456

awk方法

[root@ianLinux ~]# awk '{print $3" "$6}' ianTest.txt 
Ian 123456

grep方法

[root@ianLinux ~]# grep -oE "Ian|123456" ianTest.txt 
Ian
123456

补充:
cut 切割,简单的取列命令

  • -d指定分隔符
  • -f数字 取第几列(-f3,6)
  • -c按字符取

cut方法

[root@ianLinux ~]# cut -d" " -f3,6 ianTest.txt 
Ian 123456
[root@ianLinux ~]# cat ianTest.txt 
I am Ian myqq is 123456
[root@ianLinux ~]# cut -c 6-8,18- ianTest.txt 
Ian123456

有“,”处理

再来看看内容中有“,”时的处理方法:

a题方法一
[root@ianLinux ~]# cat ianTest.txt 
I am Ian,myqq is 123456
[root@ianLinux ~]# cut -c 6-8,18- ianTest.txt 
Ian123456
a题方法二

用sed替换后再cut

[root@ianLinux ~]# cat ianTest.txt 
I am Ian,myqq is 123456
[root@ianLinux ~]# sed 's#,# #g' ianTest.txt 
I am Ian myqq is 123456
[root@ianLinux ~]# sed 's#,# #g' ianTest.txt |cut -d " " -f3,6
Ian 123456

千万别写成这样:

[root@ianLinux ~]# sed 's#,# #g' ianTest.txt |cut -d " " -f3,6 ianTest.txt 
Ian,myqq

这里写图片描述

a题方法三

awk多分隔符使用

[root@ianLinux ~]# cat ianTest.txt 
I am Ian,myqq is 123456
[root@ianLinux ~]# awk -F "[, ]" '{print $3" "$6}' ianTest.txt 
Ian 123456

这里写图片描述

a题方法四

grep方法

[root@ianLinux ~]# grep -oE "Ian|123456" ianTest.txt 
Ian
123456
在学习 Linux Bash 命令的第 2 中,主要目标是掌握一些基础但常用的命令用法,并能够进行简单的组合操作。以下是一些键知识点和示例: ### 文件与目录操作 Linux 系统的核心概念之一是“一切皆文件”。以下是用于文件和目录操作的常用 Bash 命令: - `ls`:列出目录内容。例如,`ls /home` 显示 `/home` 目录下的所有文件和子目录。 - `cd`:切换当前目录。例如,`cd /var/log` 进入 `/var/log` 目录。 - `pwd`:显示当前工作目录的完整路径。 - `mkdir`:创建新目录。例如,`mkdir new_folder` 创建名为 `new_folder` 的目录。 - `rm`:删除文件或目录。使用 `rm -r` 删除目录及其内容,例如 `rm -r old_folder`。 ### 文本查看与处理 文本处理是 Linux Bash 中的重要功能,以下是一些常用命令: - `cat`:查看文件内容。例如,`cat example.txt` 显示 `example.txt` 文件的内容。 - `echo`:输出字符串或变量值。例如,`echo "Hello, World!"` 输出指定的字符串。 - `grep`:搜索文本内容。例如,`grep "error" log.txt` 查找 `log.txt` 文件中包含 "error" 的行。 - `sed`:流编辑器,用于非交互式文本处理。例如,`sed 's/old/new/g' file.txt` 将 `file.txt` 中的所有 "old" 替换为 "new" 并输出结果 [^3]。 ### 管道与重定向 管道和重定向是 Bash 的强大特性,允许将命令的输出传递给其他命令或文件: - 管道(`|`):将一个命令的输出作为另一个命令的输入。例如,`ps aux | grep "nginx"` 显示与 "nginx" 相的进程信息。 - 重定向(`>` 和 `>>`):将输出写入文件。例如,`echo "New content" > output.txt` 覆盖 `output.txt` 文件的内容,而 `echo "Additional line" >> output.txt` 则追加内容到文件末尾。 ### 脚本编写基础 Bash 脚本是一种自动化任务的方式。脚本通常以 `#!/bin/bash` 开头,指定解释器路径 [^2]。以下是一个简单示例: ```bash #!/bin/bash # 这是一个简单的 Bash 脚本 echo "正在执行脚本..." mkdir test_directory echo "目录已创建" ``` 保存为 `script.sh` 后,通过 `chmod +x script.sh` 赋予可执行权限,然后运行 `./script.sh` 执行脚本。 ### 示例练习 尝试完成以下练习以巩固所学内容: 1. 使用 `mkdir` 创建多个目录并进入其中一个目录。 2. 编写一个脚本,生成一个临时文件并写入一些内容。 3. 使用 `grep` 结合管道查找特定日志条目。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值