awk 中是否可以进行条件链接?
Is condition chaining possible in awk?
输入文件在 $1 中有两个名称。 $2 大部分是满的,但有时是空的。
1; 2; 3;
Trump; abc;
Obama;
Obama; abc;
Obama;
Trump; abc;
我正在 AWK 中寻找一个条件,如果名称 "Trump" 或 "Obama" 出现在 $1 中并且 $2 是空的,则用单词 "media" 填充 $3。
我试过了:
{if (=="Trump" || =="Obama" && ==" ") {=="Media"};
print [=11=]}
和
{if (=="Trump" && ==" ") {=="Media"};
if (=="Obama" && ==" ") {=="Media"};
print [=12=]}
考虑到字段分隔符是 \t
(tab) 并且每个第二个空字段包含 space " "
(whitespace) 您可以使用以下方法:
awk -F"\t" '{OFS="\t"; if(~/Trump|Obama/ && ~/ /)="media"; print}' testfile
~/Trump|Obama/
- 根据正则表达式检查字段值
输出:
Trump abc
Obama media
Obama abc
Obama media
Trump abc
第二个字段的替代比较:
!~/[^ ]/
~/[[:space:]]/
- POSIX class 白色space 字符
输入文件在 $1 中有两个名称。 $2 大部分是满的,但有时是空的。
1; 2; 3;
Trump; abc;
Obama;
Obama; abc;
Obama;
Trump; abc;
我正在 AWK 中寻找一个条件,如果名称 "Trump" 或 "Obama" 出现在 $1 中并且 $2 是空的,则用单词 "media" 填充 $3。
我试过了:
{if (=="Trump" || =="Obama" && ==" ") {=="Media"};
print [=11=]}
和
{if (=="Trump" && ==" ") {=="Media"};
if (=="Obama" && ==" ") {=="Media"};
print [=12=]}
考虑到字段分隔符是 \t
(tab) 并且每个第二个空字段包含 space " "
(whitespace) 您可以使用以下方法:
awk -F"\t" '{OFS="\t"; if(~/Trump|Obama/ && ~/ /)="media"; print}' testfile
~/Trump|Obama/
- 根据正则表达式检查字段值
输出:
Trump abc
Obama media
Obama abc
Obama media
Trump abc
第二个字段的替代比较:
!~/[^ ]/
~/[[:space:]]/
- POSIX class 白色space 字符