如何通过多个文件使用awk?

6 awk text-processing

我想要一个针对一般情况的解决方案(N 文件夹)

我正在使用 awk 处理文件并提取其内容并将其放入变量中,然后回显它:

这是文件:

H1 H2 H3 H4 H5 H6 H7 H8 H9
not important
not
not
Run Code Online (Sandbox Code Playgroud)

这是代码:

$value1=awk '/H1/ { print $1}' file
$value2=awk '/H1/ { print $2}' file
$value3=awk '/H1/ { print $3}' file
echo $value1
echo $value2
echo $value3
Run Code Online (Sandbox Code Playgroud)

我得到结果:

H1
H2
H3
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我有多个文件具有相同格式(不是确切的内容,相同的格式)并且位于不同的文件夹中但名称相同:

/folder1
file
/folder2
file
/folder3
file
Run Code Online (Sandbox Code Playgroud)

我怎样才能回显 H1 行的前 3 个值,但从这些文件夹中的每个文件中得到 9 个结果?

G-M*_*ca' 2

我想知道你是否\xe2\x80\x99 遗漏了一些问题,\n因为你似乎做了比你需要做的更多的工作\n对于你所说的你想做的事情。\xc2\xa0 如果我\xe2\x80 \x99m 正确理解你的意思。

\n\n

如果您想要做的只是输出(回显)文件中包含的行中的前三个字段(值)\n H1(假设只有一个这样的行),\n您需要做的就是

\n\n
awk '/H1/ { print $1, $2, $3 }'输入文件
\n\n

或者,如果您希望值位于三个单独的行上,

\n\n
awk '/H1/ { 打印 $1; 打印 2 美元;打印 $3 }'输入文件
\n\n

要对多个文件实现相同的结果,只需列出它们的名称,\n例如,使用大括号扩展:

\n\n
awk '/H1/ { 打印 $1; 打印 2 美元;打印 $3 }' /文件夹{1,2,3}/文件
\n\n

或使用通配符,正如其他答案所建议的那样:

\n\n
awk '/H1/ { 打印 $1; 打印 2 美元;打印 $3 }' /文件夹?/文件
\n\n

如果您需要将值分配给变量,\n以便您可以在脚本中操作它们,\n您需要更清楚地解释您的要求。

\n