我有一个两行的文件
123|456|789
abc|123|891
-我基本上需要这样的输出,我想将字符串“ xyz”添加到col 1并将xyz设为col2
xyz-123|xyz|456|789
xyz-abc|xyz|123|891
这是我使用的
awk 'BEGIN{FS=OFS="fs-"$1}{print value OFS $0}' /tmp/b.log
我得到
xyz-123|456|789
xyz-abc|123|891
我尝试过
awk 'BEGIN{FS=OFS="fs-"$1}{print value OFS $0}' /tmp/b.log|awk -F" " '{$2="fs" $0;}1' OFS=" "
但没有得到我需要的东西,您能帮忙吗?
您能不能尝试以下操作。
awk 'BEGIN{FS=OFS="|"} {$1="xyz-"$1;$2="xyz" FS $2} 1' Input_file
或按照@Corentin Limier的评论尝试:
awk 'BEGIN{FS=OFS="|"} {$1="xyz-" $1 FS "xyz"} 1' Input_file
输出如下。
xyz-123|xyz|456|789
xyz-abc|xyz|123|891
我将使用sed代替awk如下:
sed -e 's/^/xyz-/' -e 's/\|/\1xyz\|' Input_file
这在每行的开头加上xyz-
,并将第一个|
更改为|xyz|
除了awk的更新字段($ 1,$ 2 ...)方法之外,我们还可以使用替换来完成工作:
sed 's/^[^|]*/xyz-&|xyz/' file
如果必须使用awk:
awk '1+sub(/^[^|]*/, "xyz-&|xyz")' file
单线都给出预期的输出。