Linux awk不';t型打印分离器

Linux awk不';t型打印分离器,linux,bash,awk,Linux,Bash,Awk,我正在运行这个awk程序: awk -F: '{if($1=="waheed") {$2=1;print $0}}' /etc/passwd 输出为: mysql 1 118 129 MySQL Server,,, /nonexistent /bin/false 如果没有:分隔符,在这种情况下如何使用分隔符打印行? 注意:这是在awk输出中写入表达式$2=1后发生的,默认情况下,该表达式由OFS(output field Separater)变量a的内容分隔。这可以通过-v OFS=':'进

我正在运行这个awk程序:

awk -F: '{if($1=="waheed") {$2=1;print $0}}' /etc/passwd
输出为:

mysql 1 118 129 MySQL Server,,, /nonexistent /bin/false
如果没有
分隔符,在这种情况下如何使用分隔符打印行?
注意:这是在awk输出中写入表达式
$2=1

后发生的,默认情况下,该表达式由OFS(output field Separater)变量a的内容分隔。这可以通过-v OFS=':'进行设置

awk -F : -v OFS=':' '{ cmds}' file

您可以像这样直接使用awk命令:

awk 'BEGIN{OFS=":"} {your code here}'
begin quotes中的所有代码只运行一次

v选项用于将参数转换到脚本中。比如:

awk '{print $pid_doc}' -v pid_doc="$Param"

这个$Param可以从您的shell脚本中获得

谢谢。。另一个问题,我不想将awk输出写入文件,我使用这个
awk-F:-v OFS=':'{cmds}文件>>文件
,但它会附加到文件中。。已尝试“>”重写,但无效。。是的,在awk有机会读取内容之前,bash会截断文件。垫子上的猫对重定向有很好的解释