我有一个包含信息列表的文件。每行有 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}}'