我试图找出什么是下面的命令在Linux中的意思是试图了解一个简单的Linux代码
awk 'match($0, "##SA") ==0 {print $0} ' $1 > ${G_DEST_DIR}/${G_DEST_FILENAME}
它是否不再从给定的参数,并在dest_dir将其放置在1号线?
我试图找出什么是下面的命令在Linux中的意思是试图了解一个简单的Linux代码
awk 'match($0, "##SA") ==0 {print $0} ' $1 > ${G_DEST_DIR}/${G_DEST_FILENAME}
它是否不再从给定的参数,并在dest_dir将其放置在1号线?
这AWK打印从输入文件中的所有行不匹配的模式:
##SA
这个AWK的输出重定向到文件名表示为:
${G_DEST_DIR}/${G_DEST_FILENAME}
注$1
是壳这里的变量实际上是awk的输入文件。
虽然同AWK缩短为:
awk '!/##SA/' "$1" > "${G_DEST_DIR}/${G_DEST_FILENAME}"
哦,所以如果模式匹配是匹配($ 0,“## SA”)== 0什么都不做或不打印,否则打印任何事物{打印$ 0}是这样吗?非常感谢 –
是的,非常感谢你的帮助。欣赏它 –
是的,这是正确的'{打印$ 0}'是默认操作,因此可以省略。 – anubhava
不清楚为什么原作者写了一个高度unidiomatic awk脚本时简单地'的grep -v“^ ## SA''就好办多了两个阅读和写。 – tripleee
'匹配(字符串,正则表达式[,数组])' 搜寻字符串最长,最左边的由正则表达式,正则表达式匹配到并返回字符位置或索引,在该该串开始(一个,如果它开始于字符串的开始)。如果找不到匹配,则返回零。 – BMW