【问题标题】:Replacing grep while searching four variables with Awk?用 Awk 搜索四个变量时替换 grep?
【发布时间】:2019-12-21 06:44:30
【问题描述】:

我有一个目录,其中包含每日文件,其中每行包含 500 多个字段和 600,000 行。

我想查看 1 个文件并在字段 #351 上找到所有包含 B2 的行。

然后在所有文件中搜索与第一个文件输出中字段 282、341、314 和 348 中的值匹配的任何行。

现在我有以下内容,但它会产生空白输出:

ARCHIVEDIR=/appl/dir/archive
file1_tmp=$$.tmp
zcat ${ARCHIVEDIR}/FILE_12162019.gz | awk 'BEGIN{FS=OFS="|"} $351 == "B2"{gsub(/ /,""); print $282,$341,$314,$348}' > "$file1_tmp"
for fname in ${ARCHIVEDIR}/FILE_*; do
    zcat "$fname" | awk -v fname="$fname" '
        BEGIN { FS=OFS=SUBSEP="|" }
        NR==FNR { tgts[$0]; next }
        ($282,$341,$314,$348) in tgts { print fname, $0 }
    ' "$file1_tmp" -
done

例如,file1 在字段 351 中有 130,000 条包含 B2 的记录。我想从所有文件(包括 file1 中的原始文件)中查找与字段 282、341、314 和 348 匹配的任何记录。

下面的原始帖子 - 重新发布以尝试消除一些混乱

我放弃了尝试,并在 for 循环中得到了以下结果:

echo -e "$FILENAME|\c"
zcat $FILENAME | grep "$SYSTEM" | grep "$RECORDNUM" | grep "$LOCATION" | grep "$PENGUINS"

输出是:

FILENAME|{每行匹配所有 4 个搜索变量}

我正在寻找一个 awk 命令,它可以有效地清理它的输出。

我试过了:

zcat $FILENAME | awk -v FILENAME=$FILENAME -v SYSTEM=$SYSTEM -v RECORDNUM=$RECORDNUM -v LOCATION=$LOCATION -v PENGUINS=$PENGUINS -v FS="|" -v OFS='|' '/SYSTEM/ && /RECORDNUM/ && /LOCATION/ && /PENGUINS/ {print FILENAME,$0}'`

因为位置值总是相同的,所以我什至尝试了以下方法:

zcat $FILENAME | awk -v FILENAME=$FILENAME -v SYSTEM=$SYSTEM -v RECORDNUM=$RECORDNUM -v LOCATION=$LOCATION -v PENGUINS=$PENGUINS -v FS="|" -v OFS='|' '($282 == SYSTEM) && ($341 == RECORDNUM)  && ($314 == LOCATION) && ($348 == PENGUINS) {print FILENAME,$0}'

示例输入文件:(出于测试目的,我创建了以下文件的 4 个副本并压缩了文件) sh-4.2$ zcat 文件1 SYSTEM1|垫片|1435|垫片|垫片|费城|垫片|垫片|垫片|填充 SYSTEM2|垫片|88083|垫片|垫片|佛罗里达|垫片|垫片|垫片|安装 SYSTEM1|垫片|80128312|垫片|垫片|SOCAL|垫片|垫片|垫片|填充 SYSTEM2|垫片|123141|垫片|垫片|NOCAL|垫片|垫片|垫片|安装 SYSTEM1|垫片|12|垫片|垫片|乔治亚|垫片|垫片|垫片|填充 SYSTEM2|垫片|90391|垫片|垫片|德州|垫片|垫片|垫片|已安装 SYSTEM1|垫片|124910|垫片|垫片|弗吉尼亚|垫片|垫片|垫片|填充 SYSTEM2|垫片|354295|垫片|垫片|佛罗里达|垫片|垫片|垫片|已安装

sh-4.2$ ls -ls
total 32
4 -rw-rw-rw- 1 host pdx  170 Dec 20 06:10 file1.gz
4 -rw-rw-rw- 1 host pdx  170 Dec 20 06:10 file2.gz
4 -rw-rw-rw- 1 host pdx  170 Dec 20 06:10 file3.gz
4 -rw-rw-rw- 1 host pdx  170 Dec 20 06:10 file4.gz
4 -rwxrwxrwx 1 host pdx  727 Dec 20 06:15 testawk
4 -rwxrwxrwx 1 host pdx  626 Dec 20 06:16 testgrep

然后创建了 2 个脚本:testawk

 for FILENAME in `ls file1.gz`
do
   zcat $FILENAME | awk -v FS='|' -v OFS='|' '{if ($10 == "STUFFED") print $1,$3,$6,$10}' | tr -d " " >> $$.tmp
done

for TMPR in `cat $$.tmp`
do
   SYSTEM=`echo $TMPR | awk -v FS='|' '{print $1}'`; export SYSTEM
   RECORDNUM=`echo $TMPR | awk -v FS='|' '{print $2}'`; export RECORDNUM
   LOCATION=`echo $TMPR | awk -v FS='|' '{print $3}'`; export LOCATION
   PENGUINS=`echo $TMPR | awk -v FS='|' '{print $4}'`; export PENGUINS
   for FILENAME in `ls fil*`
   do
      export FILENAME
      zcat $FILENAME | awk -v FILENAME=$FILENAME -v SYSTEM=$SYSTEM -v RECORDNUM=$RECORDNUM -v LOCATION=$LOCATION -v PENGUINS=$PENGUINS -v FS="|" '/SYSTEM/ && /RECORDNUM/ && /LOCATION/ && /PENGUINS/'
   done
done

testgrep

for FILENAME in `ls file1.gz`
do
   zcat $FILENAME | awk -v FS='|' -v OFS='|' '{if ($10 == "STUFFED") print $1,$3,$6,$10}' | tr -d " " >> $$.tmp
done

for TMPR in `cat $$.tmp`
do
   SYSTEM=`echo $TMPR | awk -v FS='|' '{print $1}'`; export SYSTEM
   RECORDNUM=`echo $TMPR | awk -v FS='|' '{print $2}'`; export RECORDNUM
   LOCATION=`echo $TMPR | awk -v FS='|' '{print $3}'`; export LOCATION
   PENGUINS=`echo $TMPR | awk -v FS='|' '{print $4}'`; export PENGUINS
   for FILENAME in `ls fil*`
   do
      echo -e "$FILENAME|\c"; zcat $FILENAME | grep "$SYSTEM" | grep "$RECORDNUM" | grep "$LOCATION" | grep "$PENGUINS"
   done
done

当我执行 testawk 时,输出为空白。

当我执行 testgrep 时,输出包含 $PENGUIN=STUFFED 的所有行,文件名位于每行的开头。

sh-4.2$ ./testgrep
file1.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|1435|SPACER|SPACER|PHILLY|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|80128312|SPACER|SPACER|SOCAL|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|12|SPACER|SPACER|GEORGIA|SPACER|SPACER|SPACER|STUFFED
file1.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file2.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file3.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file4.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED
file.gz|SYSTEM1|SPACER|124910|SPACER|SPACER|VIRGINIA|SPACER|SPACER|SPACER|STUFFED

我正在做和尝试做的事情的细分: 脚本的以下部分是相同的,它将为 file1.gz 中字段 10 中具有“STUFFED”的任何行创建一个名为 $$.tmp 的文件。该文件将仅包含字段 1、3、6 中的值, 和 10. (这在脚本的下一部分中使用,目前可以使用)

for FILENAME in `ls file1.gz`
do
   zcat $FILENAME | awk -v FS='|' -v OFS='|' '{if ($10 == "STUFFED") print $1,$3,$6,$10}' | tr -d " " >> $$.tmp
done

脚本的下一部分为 4 个字段中的每一个分配变量并导出要在 awk 中使用的变量(不确定是否需要导出)。

for TMPR in `cat $$.tmp`
do
   SYSTEM=`echo $TMPR | awk -v FS='|' '{print $1}'`; export SYSTEM
   RECORDNUM=`echo $TMPR | awk -v FS='|' '{print $2}'`; export RECORDNUM
   LOCATION=`echo $TMPR | awk -v FS='|' '{print $3}'`; export LOCATION
   PENGUINS=`echo $TMPR | awk -v FS='|' '{print $4}'`; export PENGUINS

这部分脚本将启动我的 for 循环以检查所有以 fil 开头的文件是否匹配:(我已将 awk 和 grep 命令都包含在内,已将它们注释掉)

   for FILENAME in `ls fil*`
   do
      export FILENAME
#      zcat $FILENAME | awk -v FILENAME=$FILENAME -v SYSTEM=$SYSTEM -v RECORDNUM=$RECORDNUM -v LOCATION=$LOCATION -v PENGUINS=$PENGUINS -v FS="|" '/SYSTEM/ && /RECORDNUM/ && /LOCATION/ && /PENGUINS/'
#      echo -e "$FILENAME|\c"; zcat $FILENAME | grep "$SYSTEM" | grep "$RECORDNUM" | grep "$LOCATION" | grep "$PENGUINS"
   done

然后我结束原来的 for 循环: 完成

【问题讨论】:

标签: linux awk grep


【解决方案1】:

这就是我认为您正在尝试执行的操作,即打印名称以 fil* 开头的几个 gzip 文件中的行,这些文件在字段 $282、$341、$314、$348 中的值与字段 $1 中的值匹配,$3,$6,$10 来自file1.gz:

file1_tmp=$(mktemp)
zcat file1.gz | awk 'BEGIN{FS=OFS="|"} $10 == "STUFFED"{gsub(/ /,""); print $1,$3,$6,$10}' > "$file1_tmp"
for fname in fil*; do
    zcat "$fname" | awk -v fname="$fname" '
        BEGIN { FS=OFS=SUBSEP="|" }
        NR==FNR { tgts[$0]; next }
        ($282,$341,$314,$348) in tgts { print fname, $0 }
    ' "$file1_tmp" -
done

但我不知道为什么你的脚本在 1 个文件 (for FILENAME in `ls file1.gz`) 上有一个循环,我也不明白你是否真的想在 file1.gz 将匹配通配模式 @ 的第二个循环中再次处理该文件987654326@.

如果上述内容不能完全满足您的要求,请更新您的问题以澄清 what 您正在尝试做什么(而不是 如何 您'正在尝试这样做)。

【讨论】:

  • 谢谢@Ed Morton。我决定清除我的问题并以不同的方式重新提问。我相信您的脚本会起作用,但是由于输出为空白,因此我遗漏了一些东西。我希望我对我正在尝试做的事情的解释有所帮助。
  • 我希望您没有这样做,因为现在我的回答没有任何意义,因为它与您的问题中的脚本相同,而且我可能会开始投反对票。无论如何,听起来我猜对了,但如果没有要测试的东西,我们无法帮助您调试它。您需要在您的问题中提供纯文本文件file1 和至少2 个文件file2file3small(即每行5 个字段中的每个约5 行)示例可用于测试脚本是否使用cat 而不是zcat
  • 我在删除之前保存了帖子。如果需要,我可以将其添加回我当前帖子的底部。
  • 只需将您的帖子恢复到以前的版本并在顶部添加新内容。
【解决方案2】:

您无法以这种方式匹配模式中的变量。试试这个:

awk -v file=$FILENAME -v system=$SYSTEM -v ... '$0 ~ system && ... {print file,$0}'

【讨论】:

  • 应该怎么做?我在那里看不到任何搜索模式。此外,该输出为空白。
  • @Unix_pharmacy:我只是想展示这项技术。还是我错过了什么?查看更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2019-03-18
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多