awk 获取指定字符,cut截取某字符以前内容

 

转载:https://blog.csdn.net/qq_42816766/article/details/92759951

命令格式

awk '条件1{动作1} 条件2{动作2}...' 文件名
  •  
一般使用关系表达式作为条件
x>6:判断x是否大于6
x>=6:是否大于等于6
  •  

动作

格式化输出
流程控制语句(for循环、if语句)

2. 练习:

print与printf

[root@catyuan ~]# vim student
id      name    age     sex      ##写这个表时,中间的间隔使用tab,不能使用空格
1       张三    12      男
2       李四    15      男      
3       小雪    16      女
4       小敏    18      女
[root@catyuan ~]# awk '{printf $2 "\t" $4 "\n"}' student
name	sex
张三		男
李四		男
小雪		女
小敏		女
[root@catyuan ~]# awk '{print $2 "\t" $4}' student    #print自动换行
name	sex
张三		男
李四		男
小雪		女
小敏		女
[root@catyuan ~]# awk '{printf $2 "\t" $4 }' student
name	sex张三	男李四	男小雪	女小敏	女

awk与cut

[root@catyuan ~]# df -h | cut -f 5 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        20G  3.8G   16G  20% /
devtmpfs        898M     0  898M   0% /dev
tmpfs           912M     0  912M   0% /dev/shm
tmpfs           912M  9.1M  903M   1% /run
tmpfs           912M     0  912M   0% /sys/fs/cgroup
/dev/sda1       197M  152M   45M  78% /boot
tmpfs           183M  4.0K  183M   1% /run/user/42
tmpfs           183M   32K  183M   1% /run/user/0

[root@catyuan ~]# df -h | awk '{print $5 }' 
Use%
20%
0%
0%
1%
0%
78%
1%
1%

只要第一行第五列的数据
[root@catyuan ~]# df -h | grep "/dev/sda3" | awk '{print $5}'
20%
截取上面结果中的数字
[root@catyuan ~]# df -h | grep "/dev/sda3" | awk '{print $5}' | cut -f 1 -d "%"
20

3. BEGIN(条件)

在所有内容之前先执行BEGIN后面的内容

练习:

[root@catyuan ~]# awk 'BEGIN{print "test"}{print $1 "\t" $2}' student 
test
id	name
1	张三
2	李四
3	小雪
4	小敏

4. END

[root@catyuan ~]# awk 'END{print "test"}{print $1 "\t" $2}' student 
id	name
1	张三
2	李四
3	小雪
4	小敏
test

5. FS内置变量

指定分隔符

练习:

[root@catyuan ~]# cat /etc/passwd | grep /bin/bash
root:x:0:0:root:/root:/bin/bash
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
test1:x:1001:1001::/home/test1:/bin/bash
test2:x:1002:1002::/home/test2:/bin/bash
[root@catyuan ~]# cat /etc/passwd | grep /bin/bash | awk '{FS=":"}{print $1 "\t" $4}'
root:x:0:0:root:/root:/bin/bash	      ##awk先读数据,在执行条件
redhat	1000
test1	1001
test2	1002
[root@catyuan ~]# cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $4}'
root	0
redhat	1000
test1	1001
test2	1002

6. 关系运算符

>、>=、<、<=
[root@catyuan ~]# cat student 
id      name    age     sex     
1       张三    12      男
2       李四    15      男      
3       小雪    16      女
4       小敏    18      女
[root@catyuan ~]# cat student | grep -v name | awk '$3>=15{print $2 }'
李四
小雪
小敏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Linux 中,可以使用如下命令截取指定字符前面字符串: ``` echo "abcdefg" | awk -F "d" '{print $1}' ``` 其中,`echo "abcdefg"` 表示需要截取字符串是 "abcdefg",`-F "d"` 指定了分隔符为字符 "d",`'{print $1}'` 表示输出第一个字段,即分隔符前面字符串。在这个例子中,输出的结果是 "abc"。 如果需要从一个文件中截取指定字符前面字符串,可以使用以下命令: ``` cat file.txt | awk -F "d" '{print $1}' ``` 其中,`file.txt` 是需要处理的文件名。 ### 回答2: 在Linux中,可以使用一些命令和工具来截取指定字符前面字符串。 其中最常用的命令是"cut"命令。该命令可以根据指定的分隔符将字符串分成多个字段,并返回其中一个或多个字段。例如,以下是使用"cut"命令截取指定字符前面字符串的示例: ``` $ echo "Hello, World!" | cut -d ',' -f 1 ``` 上述命令中,通过管道将字符串"Hello, World!"传递给"cut"命令。参数"-d ','"告诉"cut"命令使用逗号作为分隔符,"-f 1"表示要返回第一个字段。因此,该命令的输出结果将是"Hello",即逗号之前的字符串。 除了"cut"命令,还可以使用一些其他命令和工具实现类似的功能。例如,使用"awk"命令可以更加灵活地处理字符串。以下是使用"awk"命令截取指定字符前面字符串的示例: ``` $ echo "Hello, World!" | awk -F ',' '{print $1}' ``` 上述命令中,通过管道将字符串"Hello, World!"传递给"awk"命令。参数"-F ','"告诉"awk"命令使用逗号作为字段分隔符,"{print $1}"表示打印第一个字段。因此,该命令的输出结果也将是"Hello"。 使用这些命令和工具,可以实现在Linux截取指定字符前面字符串的功能。 ### 回答3: 在Linux系统中,可以使用字符串处理命令来截取指定字符前面字符串。其中一个常用命令是`awk`,具体用法如下: `echo "Hello, World!" | awk -F, '{print $1}'` 上述命令使用`|`管道将字符串"Hello, World!"传递给`awk`命令。`-F,`表示以逗号为分隔符,`print $1`表示输出第一个字段,即在逗号之前的字符串。 另一个常用命令是`cut`,具体用法如下: `echo "Hello, World!" | cut -d, -f1` 上述命令使用`|`管道将字符串"Hello, World!"传递给`cut`命令。`-d,`表示以逗号为分隔符,`-f1`表示输出第一个字段,即在逗号之前的字符串。 除此之外,还可以使用`sed`命令来实现截取指定字符前面字符串,具体用法如下: `echo "Hello, World!" | sed 's/,.*//'` 上述命令使用`|`管道将字符串"Hello, World!"传递给`sed`命令。`s/,.*//`表示替换逗号后面的所有字符为空,即截取逗号之前的字符串。 以上是几种常用的方法来截取指定字符前面字符串,根据实际需要选择合适的命令来使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值