【问题标题】:sub and gsub function?sub 和 gsub 函数?
【发布时间】:2012-05-09 10:28:48
【问题描述】:

我有这个命令:

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(sub(/\//, "_")) ) }'
_home/mol/Pulpit/test/1.jpg

现在同样的事情,但使用 gsub:

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(gsub(/\//, "_")) ) }'

mol@mol:~

我想得到结果:

_home_mol_Pulpit_test_1.jpg

感谢您的帮助。

编辑:

我用'echo'来测试命令:

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
_home_mol_Pulpit_test_1.jpg _home_pic_Pulpit_test_1.jpg

mol@mol:~

我想得到结果:

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
/home/pic/Pulpit/test/1.jpg  _home_pic_Pulpit_test_1.jpg

【问题讨论】:

  • 看看rename 命令。有两个版本。一种是 Perl 脚本,有时称为 prename。另一个是util-linux-ng 包的一部分。两者都可以做你正在做的重命名类型。

标签: r awk substring


【解决方案1】:

如果字符串包含多个匹配项,这将不起作用...试试这个:

echo "/x/y/z/x" | awk '{ gsub("/", "_") ; system( "echo "  $0) }'

或更好(如果echo 不是其他东西的占位符):

echo "/x/y/z/x" | awk '{ gsub("/", "_") ; print $0 }'

在您的情况下,您希望在更改值之前对其进行复制:

echo "/x/y/z/x" | awk '{ c=$0; gsub("/", "_", c) ; system( "echo " $0 " " c )}'

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2010-12-31
    • 2019-06-30
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2023-03-10
    相关资源
    最近更新 更多