我从某个命令输出了多列文本,并且希望一次打印一列,例如:
#!/usr/bin/ksh
typeset -i i=0
while [[ $i -lt 5 ]]; do
<command 1> |awk '{print $i}' |<command 2>
i=$i+1
done
我知道
$i
不是在 awk 中指定第 i 列的方法。这里的正确用法是什么?假设
command 1
的输出类似于:"abc" "def" "ghi" "jkm"
"123" "456" "789" "0ab"
"erf" "fad" "dae" "kjh"
该值不一定是 3 个字符长。这里只是举例。
我想依次将第一列到第四列,以供
command 2
使用。
最佳答案
您在 $i
之间感到困惑shell 变量和 $i
awk
中的第i个字段.您需要将shell变量的值传递给awk
在使用中 -v
:
#!/bin/bash
for i in {1..5}; do
<command1> | awk -v i="$i" '{print $i}' | <command2>
done
这会让
command2
处理 command1
的输出中的每一列分别地。
关于shell - 如何使用 awk 在循环中打印列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279933/