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
Bash 在tgz中的所有文件中搜索文本_Bash_Unix_Scripting_Sh - Fatal编程技术网

Bash 在tgz中的所有文件中搜索文本

Bash 在tgz中的所有文件中搜索文本,bash,unix,scripting,sh,Bash,Unix,Scripting,Sh,Unix脚本 创建一个Unix脚本,它可以执行以下操作: 1在tgz中的所有文件中搜索文本 2在tgz中的所有文件中搜索文件名 并创建包含结果的单独存档文件 脚本应能够在以下参数表中显示: scriptname ""text"" ""file.tgz"" ""user"" 输出在/var/tmp/user/result\uUtime].tgz中 结果文件应包含所有包含所提供文本的文件 scriptname ""FileName"" ""file.tgz"" ""user"" 在/var/tm

Unix脚本

创建一个Unix脚本,它可以执行以下操作: 1在tgz中的所有文件中搜索文本 2在tgz中的所有文件中搜索文件名 并创建包含结果的单独存档文件

脚本应能够在以下参数表中显示:

scriptname ""text"" ""file.tgz"" ""user""
输出在/var/tmp/user/result\uUtime].tgz中 结果文件应包含所有包含所提供文本的文件

scriptname ""FileName"" ""file.tgz"" ""user""
在/var/tmp/user/result{time}.tgz中输出 结果tgz应具有与名称匹配的所有文件,以便开始:

$ cat foo.txt                         # two test files
foo
baz
$ cat bar.txt
bar
baz
$ tar czvf test.tar.gz *.txt          # tar and gzip them
$ mkdir temp                          # working dir
$ cd temp                             # work in it 
用于在tgz test.tar.gz中的所有文件中搜索文本foo的脚本


你有没有尝试过什么,或者你是想雇佣一个编码员?我知道搜索文本和文件,但我对shell脚本是新手,所以我需要一种方法如何开始。我如何从用户等处获取输入谢谢您的帮助我将在$tar tzf test.tar.gz中处理此问题并向您通报您也可以为我做的程序;do tar xzOf test.tar.gz$i | grep-1 foo>/dev/null&&echo$i;完成并避免弄乱IFS,创建文件和后续rm。使用-O-to-stdout选项将文件内容传输到grep
$ OIFS=$IFS
$ IFS=$'\n'                           # handle space in filenames     
$ for i in $(tar tzf ../test.tar.gz)  # list files in the tar and for loop them
  do 
    tar xzf ../test.tar.gz "$i"       # extract each file individually
    grep -l foo "$i"                  # grep for string foo in each file
    rm -f $i                          # rm extracted file
  done
foo.txt                               # the output
$ IFS=$OIFS