Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell AWK命令*_Shell_Unix - Fatal编程技术网

Shell AWK命令*

Shell AWK命令*,shell,unix,Shell,Unix,我试图使用awk检索文本的第四列,在文件的第二行有一个条件,但是我得到一个空白值作为输出 这是我的输入文件内容 第1行:xxxx 第二行:GS*HP*IRX*029053964*20180611*114500 我需要在输入文件中查找标准HP*IRX*,并在第4列打印值20180611 这是我的剧本 filedate=$(awk -F "*" '/HP*IRX/{print $4}' $file) echo $filedate 请告诉我我缺少什么。。tnx 问题在于*是正则表达式中的特殊字符

我试图使用awk检索文本的第四列,在文件的第二行有一个条件,但是我得到一个空白值作为输出

这是我的输入文件内容 第1行:xxxx 第二行:GS*HP*IRX*029053964*20180611*114500

我需要在输入文件中查找标准HP*IRX*,并在第4列打印值20180611

这是我的剧本

filedate=$(awk -F "*" '/HP*IRX/{print $4}' $file)
  echo $filedate
请告诉我我缺少什么。。tnx

问题在于*是正则表达式中的特殊字符/HP*IRX/将匹配H,后面是0或更多P,后面是IRX

你想要

awk -F'*' '$2 == "HP" && $3 == "IRX" {print $5}'
或者,如果你真的想要正则表达式

awk -F'*' '/\*HP\*IRX\*/ {print $5}'

我把\*放在前面,这样你就不会把一行与fooHP*IRX相配了

你可能会认为HP*IRX是一列,或者20180611是第四列,但awk不会同意这两种说法。你的第二栏是HP,第三栏是IRX,你想打印出第五栏$5。谢谢,它很管用。。我还有一个相关的问题。。如何搜索多个条件。。例如,我的输入文件可以包含或|,我正在尝试类似recamt=$awk-F'/BPR/{print$3}'$file | |$$awk-F |'/BPR/{print$3}'$file.的内容。您的评论的格式已被破坏。请问一个新问题。我用awk-F'[|*]'把它弄明白了,它就成功了。。非常感谢。它可能没有解决。。让我在一个单独的问题中发布它,因为它破坏了我的格式。。