如何使用 awk 创建一个在下一行编辑中使用的变量

如何使用 awk 创建一个在下一行编辑中使用的变量

我有一个包含信息列表的文件。每行有 12 或 13 个字段。例如,我将使用包含 3 和 4 字段的文件。

e.g. myfile.txt
user password location date
john passwd1  new_york today
     passwd2  london   yesterday
jeff passwd3  new_york tomorrow

我正在寻找一种方法,将约翰的名字复制到空白处的下一行。

到目前为止我正在尝试类似的事情:

Awk '{{if(NF==4) print $0; name=$1}; if(NF==3) print $name,$0}' ./myfile.txt >> ./my_editedfile.txt.

然而,每次我尝试时,它要么打印文字 $1,什么也不打印,要么打印下一行的第一个字段两次。即第二行看起来像下面的一行;

$1 passwd2 london yesterday
passwd2 london yesterday
passwd2 passwd2 london yesterday

有人可以帮助在一行上设置一个变量,然后用它来打印下一行吗?

答案1

你很接近。变量前不需要逗号或 $。尝试:

awk '{if (NF == 4) {print $0; name=$1} else {print name$0}}'

相关内容