使用awk对指定的文件进行tarball
我从中获得以下输出: (小写字母为文件,大写字母为目录) 前缀为使用awk对指定的文件进行tarball,awk,Awk,我从中获得以下输出: (小写字母为文件,大写字母为目录) 前缀为--的行表示新添加的文件。不包括这些文件,因此我无法创建包含所有差异的修补程序。所以,我将创建一个由它们组成的tarball Q:我可以使用什么脚本(例如,awk、perl或python)来创建这些文件的tarball?柏油球应包含: X/Y/A/B/c Z/G/H/i 我认为awk脚本应该是这样的(我不太熟悉w/语法): 想法?谢谢 你很接近。以下是一些建议: /^project/ { dir = $2 } $1 =
--
的行表示新添加的文件。不包括这些文件,因此我无法创建包含所有差异的修补程序。所以,我将创建一个由它们组成的tarball
Q:我可以使用什么脚本(例如,awk
、perl
或python
)来创建这些文件的tarball?柏油球应包含:
X/Y/A/B/c
Z/G/H/i
我认为
awk
脚本应该是这样的(我不太熟悉w/语法):
想法?谢谢 你很接近。以下是一些建议:
/^project/ {
dir = $2
}
$1 == "--" {
fullpath = dir $2 # space between dir and $2 means concatenation
print fullpath
# Do something with fullpath such as
# system("tar ...")
}
讨论
- $1是行中的第一个字段(令牌),$2是第二个字段,依此类推
- $0代表整个记录(行)
- 每次看到以project开头的行时,我们都会将目录$2保存到变量dir中
- 每次看到“-”的第一个字段时,我们都会打印出目录,并与文件名连接在一起。在您的情况下,请在此处插入存档文件的命令
awk {
BEGIN curdir = '', filelist = []
{
if ($0 == "project") {
curdir = $1
} else if ($0 == "--") {
# insert file specified by $1 into tarball
}
}
}
/^project/ {
dir = $2
}
$1 == "--" {
fullpath = dir $2 # space between dir and $2 means concatenation
print fullpath
# Do something with fullpath such as
# system("tar ...")
}