awk 中的字符串替换 bash shell
String substitution in awk bash shell
cat filenames.txt
Document a.txt
Document b.txt
Document c.txt
因为我需要tar三个文件,所以我使用命令行
tar -cvzf backup.tar.gz "Document a.txt" "Document b.txt" "Document c.txt"
为了做到这一点:
cat filenames.txt | awk '{ how to add " "double quatation mark to file names}' | xargs tar -cvzf backup.tar.gz
问题:
1.How 为 awk {...} 编写代码?谢谢。
2.When () 包含在文件名中,为什么tar命令不起作用?如何使用 tar?
处理特殊字符
您可以使用 xargs -I
:
cat filenames.txt | xargs -I {} tar -rvf backup.tar '{}'
gzip backup.tar
如果您需要使用awk并且文件格式是specified/generated如STRING<SPACE>STRING.txt
.[=16,您也可以使用printf =]
awk '{ printf "\"%s %s\"\n", , }' files.txt | xargs tar -cvzf backup.tgz
AWK 是处理生成的行和列的绝佳过滤器。
由于不需要过滤数据,所以可以直接使用。
$ awk '{ printf "%s\n", [=11=]; }' files.txt | xargs -I {} tar -rvf backup.tar {}
Document A.txt
Document B.txt
或不使用 printf(整行)
$ awk '{ print; }' files.txt | xargs -I {} tar -rvf backup.tar {}
并在最后一步进行压缩,gzip 无法更新压缩档案:
$ gzip backup.tar
您可以使用 -T
将文件传递给 tar 命令
然后它将读取文件并在其中添加所有文件。
tar -cvzf backup.tar.gz -T filenames.txt
例子
$cat filenames.txt
Document a.txt
Document b.txt
Document c.txt
$tar -cvzf backup.tar.gz -T filenames.txt
Document a.txt
Document b.txt
Document c.txt
$tar -tvf backup.tar.gz
-rw-r--r-- me 4 2015-01-23 08:32 Document a.txt
-rw-r--r-- me 4 2015-01-23 08:32 Document b.txt
-rw-r--r-- me 4 2015-01-23 08:32 Document c.txt
手册页条目
-T, --files-from=FILE
get names to extract or create from FILE
cat filenames.txt
Document a.txt
Document b.txt
Document c.txt
因为我需要tar三个文件,所以我使用命令行
tar -cvzf backup.tar.gz "Document a.txt" "Document b.txt" "Document c.txt"
为了做到这一点:
cat filenames.txt | awk '{ how to add " "double quatation mark to file names}' | xargs tar -cvzf backup.tar.gz
问题: 1.How 为 awk {...} 编写代码?谢谢。
2.When () 包含在文件名中,为什么tar命令不起作用?如何使用 tar?
处理特殊字符您可以使用 xargs -I
:
cat filenames.txt | xargs -I {} tar -rvf backup.tar '{}'
gzip backup.tar
如果您需要使用awk并且文件格式是specified/generated如STRING<SPACE>STRING.txt
.[=16,您也可以使用printf =]
awk '{ printf "\"%s %s\"\n", , }' files.txt | xargs tar -cvzf backup.tgz
AWK 是处理生成的行和列的绝佳过滤器。
由于不需要过滤数据,所以可以直接使用。
$ awk '{ printf "%s\n", [=11=]; }' files.txt | xargs -I {} tar -rvf backup.tar {}
Document A.txt
Document B.txt
或不使用 printf(整行)
$ awk '{ print; }' files.txt | xargs -I {} tar -rvf backup.tar {}
并在最后一步进行压缩,gzip 无法更新压缩档案:
$ gzip backup.tar
您可以使用 -T
将文件传递给 tar 命令
然后它将读取文件并在其中添加所有文件。
tar -cvzf backup.tar.gz -T filenames.txt
例子
$cat filenames.txt
Document a.txt
Document b.txt
Document c.txt
$tar -cvzf backup.tar.gz -T filenames.txt
Document a.txt
Document b.txt
Document c.txt
$tar -tvf backup.tar.gz
-rw-r--r-- me 4 2015-01-23 08:32 Document a.txt
-rw-r--r-- me 4 2015-01-23 08:32 Document b.txt
-rw-r--r-- me 4 2015-01-23 08:32 Document c.txt
手册页条目
-T, --files-from=FILE
get names to extract or create from FILE