从文件中提取列并使用分隔符Shellscript打印到新文件

时间:2017-10-10 15:45:56

标签: bash shell unix awk

我想用相同的分隔符打印分隔文件的1,2,3,6列。分隔符是1e(十六进制)或036(八进制)。这是bashscript。我从帖子中读到,我的尝试是一种很好的方法:

awk 'BEGIN{OFS="\036"} {print$1,$2,$3,$6}' filename > newfile.txt

当我这样做时,该文件包含源文件中的所有内容。期待看到我做错了什么。下面我有一些示例输入和输出。实际文件有很多记录。 ^^表示1e(十六进制)或\ 036(八进制)。

输入:

Q001^^bob123^^001^^X^^ ^^^^ ^^               ^^TX^^B^^ ^^   ^^2^^10

输出:

Q001^^bob123^^001

1 个答案:

答案 0 :(得分:3)

OFS输出字段分隔符,而不是输入字段分隔符。您还必须设置FS

awk 'BEGIN{FS=OFS="\036"} {print$1,$2,$3,$6}' filename > newfile.txt