awk -F"\t" -v OFS="\t" '{if($18~/^ *[0-9]*(\.[0-9]+)?" *$/)sub(/"/,"",$18);else $18=" "}1' sample.txt
上面的代码是我正在修改的脚本中使用的一些awk
代码。我是Unix的新手,所以我无法理解上面awk
的语法。
-F
用于将列与分隔符分开。OFS
? awk
脚本末尾有什么用途?答案 0 :(得分:4)
-v OFS="\n"
将名为OFS
的参数从shell传递给awk脚本。与-F选项或FS
类似,它是字段分隔符 - 但是对于输出。它被称为输出字段分隔符
你可以测试一下:
awk -v OFS=' ' '{print 1,2}' a.txt
以空格分隔的输出:
1 2
1 2
awk -v OFS=';' '{print 1,2}' a.txt
输出由;
分隔:
1;2
1;2
在您的情况下,这意味着输出将由制表符(作为输入)
分隔 awk脚本末尾的1
,除了脚本生成的输出外,让awk打印原始输入行。这是因为awk脚本通常包含测试(正则表达式等)和针对它们的操作。测试1
将始终为真。由于awk
的默认操作是打印当前行,它将打印行