linux - 使用 Awk 根据给定的表情符号显示特定行?

标签 linux unix awk

下面有一个名为 emoji.txt 的文件:

😀 Human 1 Disconnected 
VPN1 Human 2 Disconnected
😃 Human 3 Is Connected
VPN2 Human 4 Connected
😆 Human 5 Disconnected
🙂 Human 6 Connected 
VPN4 Human 7 Disconnected
🙃 Human 8 Connected

那么我希望得到这样的结果:

😀 Human 1 Disconnected 
😃 Human 3 Is Connected
😆 Human 5 Disconnected
🙂 Human 6 Connected 
🙂 Human 7 Connected

目前,我从 awk 开始,根据给定的表情符号,我只能得到一个:

🙂 Human 6 Connected 
🙂 Human 7 Connected

功能:

 awk -F"\t" '/🙂/ {print $0}'  emoji.txt

但这不是我想要做的,我不想只得到一个,而是想要得到我尝试过的所有东西

 awk -F"\t" '/🙂/\😆/\😃/\/😀/ {print $0}'  emoji.txt

但是什么也没发生。

最佳答案

您应该在 awk 模式中使用交替:

awk '/🙂|😆|😃|😀/' emoji.txt

请注意,括号表达式内的 ; 被视为文字符号。

表情符号是多字节代码点,在括号表达式内使用它们可能会产生意外的输出,因此首选交替。

此外,{print $0} 是默认操作,因此您可以忽略它。由于您稍后不使用字段分隔符,因此 -F"\t" 也是多余的(因为记录默认情况下会被分割成具有任何水平空白字符的字段)。

关于linux - 使用 Awk 根据给定的表情符号显示特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409878/

相关文章:

bash - 如何仅保留以相同单词开头的连续行的最后一行?

linux - 如何通过 ssh 区分目录

java - 为什么 Java 程序员应该关心 2038 年的错误?

linux - Bash 脚本 : $x=$x+2 is not getting recognised

regex - 使用正则表达式通过 Bash 检查范围

awk - 将系统命令的输出分配给变量

awk - awk 可以根据单独的规范文件替换字段吗?

linux - 如何获取 Linux 内核的 bpf_helpers.h 头文件?

linux - 从 strace 输出中提取系统调用名称

ruby - Debian squeeze 下 Ruby 的乘客安装错误