用于从多个字段读取数据的awk脚本

用于从多个字段读取数据的awk脚本,awk,Awk,我正在尝试创建一个awk脚本,从txt文件读取数据并创建一个输出脚本。如何从其他列读取数据?每行可以有更多的列 cat test.txt | awk-F”“{print”echo“$1”\n print“$2}” test.txt test1 1 2 3 test2 2 test3 3 4 test4 4 5 6 7 输出: echo test1 echo 1 echo 2 echo 3 echo test2 echo 2 要打印文件中每行字段数可变的所有字段,需要在awk中循环使用NF变量

我正在尝试创建一个awk脚本,从txt文件读取数据并创建一个输出脚本。如何从其他列读取数据?每行可以有更多的列

cat test.txt | awk-F”“{print”echo“$1”\n print“$2}”

test.txt

test1 1 2 3
test2 2
test3 3 4
test4 4 5 6 7
输出:

echo test1
echo 1
echo 2
echo 3
echo test2
echo 2

要打印文件中每行字段数可变的所有字段,需要在awk中循环使用NF变量,该变量保存行中的字段数

另外,awk的分隔符在默认情况下是一个空格,因此这是不需要的

$ cat test.txt
test1 1 2 3
test2 2
test3 3 4
test4 4 5 6 7



$ awk '{for (i = 1; i <= NF; i++) print "echo "$i}' test.txt
echo test1
echo 1
echo 2
echo 3
echo test2
echo 2
echo test3
echo 3
echo 4
echo test4
echo 4
echo 5
echo 6
echo 7
$cat test.txt
测试1 2 3
测试2
测试3 3 4
测试4 5 6 7

$awk'{for(i=1;i
awk'{print“echo”$1;for(i=2;i为什么?为什么您要使用awk来创建一个shell脚本,而不仅仅是使用awk来执行任何您想执行的操作?我不会使用awk来创建一个shell脚本。我使用awk来读取数据并创建一个输出。输出是一个脚本,所以您让awk来输出一个脚本,但它不是一个shell脚本,或者它是一个shell脚本,但您需要我不打算使用它。明白了。祝你好运!谢谢你的支持。我更新了我的问题。我如何才能只为打印命令创建一个循环?你应该像OP一样使用
test.txt
。初学者可以解释一下为什么这样做。谢谢杰夫。这就是我需要的。
awk '{print "echo "$1; for (i = 2; i <= NF; i++) print "print "$i}' test2.txt