【问题标题】:awk script to read data from multiple fields用于从多个字段读取数据的 awk 脚本
【发布时间】:2015-10-07 20:54:58
【问题描述】:

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

cat test.txt | awk -F" " '{print "echo "$1"\nprint "$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 来创建 shell 脚本,而不是仅仅使用 awk 来做任何你想做的事情?
  • 我不会使用 awk 创建 shell 脚本。我正在使用 awk 来读取数据并创建输出。输出是一个脚本
  • 所以你得到了 awk 来输出一个脚本,但要么它不是一个 shell 脚本,要么它是一个 shell 脚本,但你不会使用它。知道了。祝你好运!

标签: awk


【解决方案1】:
awk '{print "echo "$1; for (i = 2; i <= NF; i++) print "print "$i}' test2.txt

【讨论】:

  • 你应该像 OP 一样使用test.txt。对于初学者来说,最好能解释一下为什么会这样。
  • 谢谢杰夫。这就是我需要的。
【解决方案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 使用,awk 可以将文件作为参数。

【讨论】:

  • 感谢您的支持。我更新了我的问题。如何为仅打印命令创建循环?
猜你喜欢
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2018-07-02
相关资源
最近更新 更多