gpt4 book ai didi

shell - 找出特定字符并相应地执行搜索?

转载 作者:行者123 更新时间:2023-12-03 21:06:55 28 4
gpt4 key购买 nike

我正在尝试根据我想在其后续行中查找剩余字段值的字符来查找两个字符

123456Baadvvdwhbdwbdhw test1 test2 test3 test4 test5
test1 here is the test.
test2 here is the test.
here is line to skip.
here is another line to skip.
test3 here is the test.
here is another line to skip.
123415341636b121313131 test1 test2 test3 test4 test5
here is another line to skip...
here is test5 found.
条件第一: 检查第一个字段是否有 B(直到找到下一个 b 或 B)然后从第二个字段开始查看它们的值是否存在于其后续行中,如果它们存在则打印它们(打印第一行 B 一个如果至少找到 1 个匹配项)
第二个条件: 检查第一个字段是否有 b 然后在所有后续行中查找最后一个字段(直到在两个条件中找到下一个 b 或 B),如果至少有 1 个后续行找到最后一个字段作为匹配,则打印具有 b 的行它。
上面显示的样本的预期输出将是:
123456Baadvvdwhbdwbdhw test1 test2 test3 test4 test5
test1 here is the test.
test2 here is the test.
test3 here is the test.
123415341636b121313131 test1 test2 test3 test4 test5
here is test5 found.
因为我正在学习脚本,所以我尝试了一些零碎的方法,例如:
awk '$1 ~ "B"' file to get first field has B or not
要从第二个字段到最后一个字段获取字段,我使用了如下命令:
awk '{​​​​​​​for(i=2;i<=NF;i++){​​​​​​​print $i}​​​​​​​}​​​​​​​'
但我不确定如何在单个 awk 中完成,任何指导都非常感谢

最佳答案

这是一个可以完成这项工作的 awk 命令:

awk 's != "" {for (i=1; i<=NF; ++i) if (index(s, " " $i " ")) {print; next}} $1 ~ /[Bb]/ {print; $1=""; s = $0 " "}' file

123456Baadvvdwhbdwbdhw test1 test2 test3 test4 test5
test1 here is the test.
test2 here is the test.
test3 here is the test.
123415341636b121313131 test1 test2 test3 test4 test5
here is test5 found.
更易读的版本:
awk '
s != "" {
for (i=1; i<=NF; ++i)
if (index(s, " " $i " ")) {
print
next
}
}
$1 ~ /[Bb]/ {
print
$1 = ""
s = $0 " "
}' file

关于shell - 找出特定字符并相应地执行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66322078/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com