如何理解awk取文本中两个字符串之间的部分
如果一个文本文件中包含了许多行,每行都包含了一些字符串,有时候我们需要从中提取出其中的某一部分。这时候就可以使用awk命令来实现。
awk命令的格式如下:
awk 'pattern {action}' input-file
其中,pattern表示一个模式,可以是一个正则表达式,也可以是一个数值表达式,action表示对匹配到pattern的行所要执行的操作。
下面我们就来看一个例子,假设我们要从一个文本文件中提取出以“http”开头,以“.com”结尾的字符串。我们可以使用下面的命令来实现:
awk '/^http/ && /.com$/' input-file
这条命令的意思是,对文件中的每一行,如果它的内容以“http”开头,并且以“.com”结尾,那么就将这一行输出出来。
当然,我们也可以使用下面的命令来实现同样的功能:
awk '/http/,/.com/' input-file
这条命令的意思是,对文件中的每一行,如果它的内容包含“http”字符串,并且包含“.com”字符串,那么就将这一行输出出来。
需要注意的是,使用这种方式来提取字符串时,字符串之间可以有任意多个空格或者其他的字符。
此外,awk命令还可以使用“{print $0}”来将匹配到的行输出出来。例如,我们可以使用下面的命令来实现同样的功能:
awk '/http/,/.com/{print $0}' input-file
这条命令的意思是,对文件中的每一行,如果它的内容包含“http”字符串,并且包含“.com”字符串,那么就将这一行输出出来。
需要注意的是,使用“{print $0}”时,如果一行中包含多个字符串,那么只有第一个字符串会被输出。
另外,我们还可以使用“{print $1,$2,$3}”来将一行中的前三个字符串输出出来。例如,我们可以使用下面的命令来实现同样的功能:
awk '/http/,/.com/{print $1,$2,$3}' input-file
这条命令的意思是,对文件中的每一行,如果它的内容包含“http”字符串,并且包含“.com”字符串,那么就将这一行中的前三个字符串输出出来。
相关文章