如何使用awk在多个字段中设置值?
假设我在一个文件(file.txt)中有以下数据: 我想在字段1($1)前面加一个“A”,在字段3($3)前面加一个“B”。我的awk脚本会是什么样子?我试过:如何使用awk在多个字段中设置值?,awk,Awk,假设我在一个文件(file.txt)中有以下数据: 我想在字段1($1)前面加一个“A”,在字段3($3)前面加一个“B”。我的awk脚本会是什么样子?我试过: awk -F "|" -OFS='|' ' { $1 = "A"$1 $3 = "B"$3 print; } ' file.txt 但这不起作用。结果是: Aone|two|three|four|five|six B 对不起,我不是这里的优秀awk程序员。看来我已经解决了。这与输出字段分隔符(O
awk -F "|" -OFS='|' '
{
$1 = "A"$1
$3 = "B"$3
print;
}
' file.txt
但这不起作用。结果是:
Aone|two|three|four|five|six B
对不起,我不是这里的优秀awk程序员。看来我已经解决了。这与输出字段分隔符(OFS)有关。如果我发布以下命令,它将起作用:
awk -F "|" 'BEGIN{OFS="|";}{$1="A"$1;$3="B"$3; print}' file.txt
OFS值必须在脚本内部,并且不能作为参数传递给awk。不清楚原因。使用标志
-OFS='|'
将字段分隔符设置为S=|
。照办
awk '...' FS=\| OFS=\| file.txt
您只需要使用
-vofs='|'
而不是-OFS='|'
,但是更好的方法是同时设置这两个变量(awk'BEGIN{FS=OFS=“|”}{$1=“A”$1;$3=“B”$3;print}file.txt
)以避免在两个位置使用相同的硬编码值(“|FS=OFS=“/code>)。
awk '...' FS=\| OFS=\| file.txt