基本的Linux bash命令说明:awk和其他人

时间:2014-01-10 18:41:21

标签: linux bash shell scripting awk

我正在使用Mac OSBash terminal来做一些基本的脚本编写。 我有一些问题,当我在网上搜索时,我找不到答案 (或者可能是我的搜索关键字不好)

首先,我看到有三条路径:/bin, /usr/bin and /usr/local/bin。某些命令(如grep)位于/usr/bin,而其他一些命令({1}}则位于ls

为什么我们有三个不同的箱子以及在那里放置类似命令的标准

其次,我想知道使用/bin和`。

之间的区别
'

如果我尝试:

echo `date` 
Fri Jan 10 10:36:52 PST 2014

awk '{print $1}' test.txt
1
2
3
4

所以何时使用awk `{print $1}` test.txt -bash: {print: command not found awk: syntax error at source line 1 context is >>> test. <<< txt awk: bailing out at source line 1 和`。

最后,上述'有效。但这不起作用

awk with print

可以awk '{echo $1}' test.txt print不能互换使用吗?

P.S:我是echo的初学者,请善待

5 个答案:

答案 0 :(得分:2)

简短答案不一定详尽无遗:

  1. / bin通常用于系统命令
  2. / usr / bin适用于用户的命令
  3. / usr / local / bin适用于通常不通过分发或发布操作系统安装的软件。
  4. 行情:

    1. shell中没有触及单引号的内容
    2. 双引号中的内容是由shell扩展的变量($ var扩展为$ var包含的内容)
    3. 后引号中的内容作为命令执行,该命令的输出将替换后引号中的内容。您也可以使用$(echo Hello)来实现相同的目标。
    4. 你不能轻易地将作为脚本传递的字符串中的awk和shell混合到awk中。 (例如:awk '{echo $1}' test.txt

答案 1 :(得分:1)

awk `{print $1}` test.txt

由于您使用的是背tics而不是单引号,因此失败 正确的:

awk '{print $1}' test.txt 

然后它将打印文件中所有行的第一个字段。


awk '{echo $1}' test.txt

由于echo不是awk命令,因此不起作用。

告诉我们您拥有哪些文字以及您希望从中获得什么......

答案 2 :(得分:0)

你需要读一本书。我推荐Shell Scripting Recipes: A Problem-Solution Approachhttp://www.amazon.com/Shell-Scripting-Recipes-Problem-Solution-Approach/dp/1590594711)。阅读它,完成练习,然后回答问题,如果你有任何问题(甚至更好地在comp.unix.shell新闻组中询问它们,那本书的作者和所有其他shell专家都会在那里闲逛)。

答案 3 :(得分:0)

print是一个awk命令。

echo是一个shell命令。

反引号和$()运行shell命令。

'引用内容,使得shell不会扩展其中的任何内容。

答案 4 :(得分:0)

$(echo hello)与:echo hello相同。通过执行此操作,您需要bash解释器执行该命令的结果,即“hello”。但是你好不是一个命令(除非你自己定义)。

这些例子都是正确的:

foo=$(echo hello)
echo ${foo}

foo=(echo "echo hello")
${foo}