shell中,awk命令的$0是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中,awk命令的$0是啥意思?相关的知识,希望对你有一定的参考价值。
比如awk "print \$0" 1.txt,我试了下是把1.txt全部显示出来了,
但是$0到底什么意思呢?$1呢?
shell命令awk 'print $0' 1.txt 的意思是输出1.txt文件的所有内容。
shell命令awk 'print $1' 1.txt的意思是输出1.txt文件的第一列内容。
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
扩展资料:
shell的种类:
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。
1、Bourne shell是UNⅨ最初使用的shell,并且在每种UNⅨ上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
Linux操作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。
Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
2、C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,它不仅和Bash shell是提示符兼容,而且还提供比Bash shell更多的提示符参数。
3、Korn shell集合了C shell和Bourne shell的优点并且和Bourne shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。
参考资料来源:百度百科-Linux Shell
shell命令awk 'print $0' 1.txt 的意思是输出1.txt文件的所有内容。
shell命令awk 'print $1' 1.txt的意思是输出1.txt文件的第一列内容。
awk是一个文本分析工具,他可以把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理,$几(0除外)就代表选取输出第几列数据,例如$2 是指第二个切片。print $2是打印第二个切片的值。
使用方法:awk 'pattern + action' filenames。
扩展资料
调用awk的方式介绍:
1、shell脚本方式将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk
2、命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
参考技术B awk默认是以行为单位处理文本的,对1.txt中的每一行都执行后面 " " 中的语句。awk中的两个术语:
记录(默认就是文本的每一行)
字段 (默认就是每个记录中由空格或TAB分隔的字符串)
$0就表示一个记录,$1表示记录中的第一个字段。
一般 print $0 就是打印整行内容($0前面不需要反斜杠),print $1表示只打印每行第一个字段。本回答被提问者采纳 参考技术C awk默认是以行为单位处理文本的,对1.txt中的每一行都执行后面 " " 中的语句。
awk中的两个术语:
记录(默认就是文本的每一行)
$0就表示一个记录,$1表示记录中的第一个字段。
一般 print $0 就是打印整行内容($0前面不需要反斜杠),print $1表示只打印每行第一个字段。
子进程中的“shell”参数在 Windows 上是啥意思?
【中文标题】子进程中的“shell”参数在 Windows 上是啥意思?【英文标题】:What does the 'shell' argument in subprocess mean on Windows?子进程中的“shell”参数在 Windows 上是什么意思? 【发布时间】:2010-10-20 18:51:09 【问题描述】:子进程模块的文档声明“如果 shell 为 True,则将通过 shell 执行指定的命令”。在 Windows 操作系统上,这在实践中意味着什么?
【问题讨论】:
【参考方案1】:表示该命令将使用COMSPEC
环境变量中指定的程序执行。通常cmd.exe
。
确切地说,子进程调用CreateProcess
windows api 函数,将"cmd.exe /c " + args
作为lpCommandLine
参数传递。
如果 shell==False,则 CreateProcess 的 lpCommandLine
参数就是 args
。
【讨论】:
【参考方案2】:当你执行一个外部进程时,你想要的命令可能看起来像“foo arg1 arg2 arg3”。如果“foo”是一个可执行文件,那就是执行并给出参数的内容。
但是,通常情况下,“foo”实际上是某种脚本,或者可能是 shell 内置的命令,而不是磁盘上的实际可执行文件。在这种情况下,系统不能直接执行“foo”,因为严格来说,这类事情是不可执行的。他们需要某种“外壳”来执行它们。在 *nix 系统上,这个 shell 通常(但不一定)是 /bin/sh。在 Windows 上,它通常是 cmd.exe(或存储在 COMSPEC 环境变量中的任何内容)。
此参数可让您定义您希望使用哪个 shell 来执行您的命令,在相对少见的情况下您不需要默认值。
【讨论】:
【参考方案3】:除了其他答案中所说的之外,如果您想在该文件类型的默认查看器中打开文件,这在实践中很有用。例如,如果你想打开一个 HTML 或 PDF 文件,但不知道运行它的系统上安装了哪个浏览器或查看器,或者无法保证可执行文件的路径,你可以简单地传递文件名作为 args 字段的唯一参数,然后设置 shell=True。这将使 Windows 使用与该文件类型关联的任何程序。 一个警告,如果你的文件路径有空格,你需要用两个“。”。
例如。
path = "C:\\Documents and Settings\\Bob\\Desktop\\New Folder\\README.txt"
subprocess.call('""' + path + '""', shell = True)
【讨论】:
os.startfile 是一种更好的方法。 哇。我什至不知道它存在。我在 Google 上挖了几个小时,这是我能找到的最好的。【参考方案4】:在using-the-subprocess-module中,有一个明确的段落:
可执行参数指定要执行的程序。很少需要它:通常,要执行的程序由 args 参数定义。如果 shell=True,可执行参数指定使用哪个 shell。在 Unix 上,默认的 shell 是 /bin/sh。 在 Windows 上,默认 shell 由 COMSPEC 环境变量指定。
Windows 示例 - 如果没有 shell,shell (cmd.exe
) 命令 date -t
将无法识别:
>>> p=subprocess.Popen(["date", "/t"], stdout=subprocess.PIPE)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 804, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
>>>
使用 shell,一切正常:
>>> p=subprocess.Popen(["date", "/t"], shell=True, stdout=subprocess.PIPE)
>>> p.communicate()
('Wed 04/22/2009 \r\n', None)
>>>
【讨论】:
我认为 OP 所寻找的不仅仅是文档的反刍。我认为他们在这种情况下并没有理解 shell 的整个概念,而是在寻找比文档提供的更多的东西。 @BryanOakley - 我不同意。这正是我所需要的。我正在查看文档,但无法找到详细介绍shell=True
或 shell=False
所做的部分,直到我在这里找到了 gimel 的答案,将其拉出来并强调了不同的部分。以上是关于shell中,awk命令的$0是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章