小编use*_*232的帖子

使用 IFS 拆分字符串

我编写了一个示例脚本来拆分字符串,但它没有按预期工作

#!/bin/bash
IN="One-XX-X-17.0.0"
IFS='-' read -r -a ADDR <<< "$IN"
for i in "${ADDR[@]}"; do
 echo "Element:$i"
done
#split 17.0.0 into NUM
IFS='.' read -a array <<<${ADDR[3]};
for element in "${array[@]}"
do
    echo "Num:$element"
done
Run Code Online (Sandbox Code Playgroud)

输出

One
XX
X
17.0.0
17 0 0
Run Code Online (Sandbox Code Playgroud)

但我预计输出是:

      One
      XX
      X
      17.0.0
      17
      0
      0
Run Code Online (Sandbox Code Playgroud)

bash shell-script lfs

11
推荐指数
2
解决办法
1万
查看次数

如何使用 tar 的 --transform 参数?

我对以下文件进行了tar'd和zip'd处理:

/opt/abc/xyz/abc.xml
Run Code Online (Sandbox Code Playgroud)

到:

/tmp/backup/abc.xml.tar.gz
Run Code Online (Sandbox Code Playgroud)

我试图解压并解压缩到/opt/abc/xyz/(same path)目录。

我遇到了以下命令。我以root用户身份执行它,但没有发现任何错误或输出。我期待下面的命令将提取abc.xmlabc.xml.tar.gz和重命名为abc.xml_v9

tar --force-local --transform='s/abc.xml/abc.xml_v9/' -zxpsf /tmp/backup/abc.xml.tar.gz -C /
Run Code Online (Sandbox Code Playgroud)

输出应该是

/opt/abc/xyz/abc.xml_v9
Run Code Online (Sandbox Code Playgroud)

tar 的手册页说以下信息

File name transformations:      

       --transform=EXPRESSION, --xform=EXPRESSION
              use sed replace EXPRESSION to transform file names

              File name matching options (affect both exclude and include patterns):
Run Code Online (Sandbox Code Playgroud)

有人可以通过一些示例帮助我理解上述命令吗?

tar

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

lfs ×1

shell-script ×1

tar ×1