shell脚本中awk -FS和awk -f的区别

sdg*_*dgd 1 linux bash shell awk

我是shell脚本的新手,我awk -FSawk -f使用的命令之间很困惑.我试过阅读这两个页面之间差异的多个页面但是无法理解清楚.请帮助.这是一个例子:让我们考虑一个文本文件说,data.txt具有以下细节.

S.No Product Qty Price
1-Pen-2-10
2-Pencil-1-5
3-Eraser-1-2
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用以下命令时:

$ awk -f'-' '{print $1,$2} data.txt
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

1 Pen
2 Pencil
3 Eraser
Run Code Online (Sandbox Code Playgroud)

但是当我使用命令时:

$ awk -FS'-' '{print $1,$2} data.txt

输出是:

1-Pen-2-10
2-Pencil-1-5
3-Eraser-1-2
Run Code Online (Sandbox Code Playgroud)

我不明白它使用-FS命令的区别.有人可以帮我解决这两个命令之间究竟发生了什么.谢谢!

Ed *_*ton 6

你比你想象的更困惑.没有-FS.

FS 是包含字段分隔符的变量.

-F是一个设置FS它的参数的选项.

-f 是一个选项,其参数是包含要执行的脚本的文件的名称.

你发布的脚本会产生语法错误,而不是你说它们产生的输出,所以idk告诉你什么...