如何使用awk在多个字段中设置设置值?

时间:2017-09-06 23:51:08

标签: awk

说我在文件(file.txt)中有以下数据:

one|two|three|four|five|six

我想在第一场($ 1)前加一个“A”,我想在第三场($ 3)前加上“B”。我的awk脚本会是什么样子?我试过了:

awk -F "|" -OFS='|' '
   {
    $1 = "A"$1
    $3 = "B"$3
    print;
   }
' file.txt

但是这没用。输出是:

Aone|two|three|four|five|six  B

对不起,我在这里不是一个很棒的程序员。

2 个答案:

答案 0 :(得分:1)

看起来我想通了。它与输出字段分隔符(OFS)有关。如果我发布以下内容,则可以:

awk -F "|" 'BEGIN{OFS="|";}{$1="A"$1;$3="B"$3; print}' file.txt

OFS值必须在脚本中,不作为参数传递给awk。不完全确定原因。

答案 1 :(得分:0)

使用标记-OFS='|'将字段分隔符设置为S=|。只是做

awk '...' FS=\| OFS=\| file.txt