AWK-澄清请求示例
我有3个使用gsub的示例: 1.AWK-澄清请求示例,awk,gsub,Awk,Gsub,我有3个使用gsub的示例: 1. echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$1); print $1 "\t" $2}' A B B C $ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$2); print $1 "\t" $2}' A B B C $ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),""
echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$1); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$2); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$0); print $1 "\t" $2}'
.
2.
echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$1); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$2); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$0); print $1 "\t" $2}'
.
3.
echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$1); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$2); print $1 "\t" $2}'
A
B B
C
$ echo -e "A A\nB B\nC C" | awk '{gsub($(!/B/),"",$0); print $1 "\t" $2}'
.
为什么在3个示例中awk未打印?awk是否不应打印?:
B B
请解释3个例子
谢谢你的帮助。我的重点是:
$(!/B/)
。非常尴尬。这是什么意思(或者至少我猜是什么意思)
- /B/:它尝试匹配整行中的字母
。如果匹配,则返回B
,否则返回1
0
- :否定上一个结果代码
- $():解析之前的指令后,返回整行(
)或第一个字段($0
)$1
- 当
匹配时,指令为B
,为空行。这很清楚gsub($0,“,$0)
- 当
不匹配时,指令为B
。因此,由于两个字母是相同的,gsub($1,“,$0)
多次以行替换,因此它会删除所有字符。添加另一个不同的字符,您将看到差异李>gsub
echo -e "A A 1\nB B 1\nC C 1" | awk '{gsub($(!/B/),"",$0); print $1 "\t" $2}'
这将产生:
1
1
我不明白在gsub正则表达式中使用否定,你希望它做什么,你对此有参考吗,或者你只是想知道如何在
/[^B]/
上拆分?@tripleee,为什么我不能使用gsub正则表达式否定$(!/B/)
?你能解释一下吗?不,你能解释一下你认为这是什么意思吗?你想实现什么?我只是想知道你是否可以使用这种形式的否定$(!/B/)
?如果你做不到,为什么?如果它做了你认为它做的事情,那就去做;但也许能解释一下这对我们其他人有什么影响。在我看来,你正在努力完成一些事情,但可能没有按照你期望的方式工作,但如果你不告诉我们你期望的是什么,我们无法帮助你弄清楚。好的,你的电话。谢谢你的解释。我还有这个问题。为什么我不能使用gsub regex否定$(!/B/)
?你能解释一下吗?@Tedee12345:你想用什么就用什么,但这让人困惑。对于你(或写这篇文章的人)想要实现的目标,一眼就能看出重点并不容易。谢谢你的解释。