首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GNU并行:不要引用包含空格的Perl替换字符串值?

GNU Parallel 是一个强大的工具,用于在Linux环境中并行执行命令。它可以帮助你充分利用多核处理器,加快任务处理速度。关于你提到的“不要引用包含空格的Perl替换字符串值”的问题,这通常涉及到在使用GNU Parallel时如何正确处理包含空格的字符串。

基础概念

GNU Parallel 使用Perl风格的替换字符串来处理输入数据。例如,::: 后面的字符串会被替换为输入数据的每一项。如果这些字符串中包含空格,就需要特别小心处理,以避免错误。

相关优势

  1. 提高效率:通过并行执行任务,可以显著减少总体完成时间。
  2. 简化脚本:GNU Parallel 提供了一种简单的方式来并行化命令行任务,无需编写复杂的脚本。
  3. 灵活性:支持多种输入源和复杂的替换逻辑。

类型与应用场景

  • 文件处理:批量重命名文件、压缩图片等。
  • 数据处理:对大型数据集进行并行计算或转换。
  • 自动化任务:定期执行的维护任务,如备份、更新等。

遇到的问题及解决方法

问题描述

当输入数据中的字符串包含空格时,直接使用可能会导致命令解析错误。例如:

代码语言:txt
复制
parallel echo ::: "file with space.txt" "another file.txt"

可能会被错误地解析为多个参数,而不是单个文件名。

解决方法

  1. 使用引号:确保每个包含空格的字符串都被双引号包围。
  2. 使用引号:确保每个包含空格的字符串都被双引号包围。
  3. 使用 --shellquote 选项:这个选项会自动为你处理引号问题。
  4. 使用 --shellquote 选项:这个选项会自动为你处理引号问题。
  5. 避免特殊字符:尽量减少在文件名中使用特殊字符,特别是空格和引号。

示例代码

假设你有一个包含空格的文件列表,并希望并行复制这些文件到另一个目录:

代码语言:txt
复制
files=("file with space.txt" "another file.txt")
parallel cp ::: "${files[@]}"

或者使用 --shellquote

代码语言:txt
复制
parallel --shellquote cp ::: "${files[@]}"

总结

处理包含空格的字符串时,关键是确保每个字符串都被正确地引用。使用双引号或 --shellquote 选项可以有效避免解析错误。通过这种方式,你可以充分利用GNU Parallel的强大功能,同时确保命令的正确执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

posix,perl正则表达式区别

在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容 。许多程序设计语言都支持利用正则表达式进行字符串操作。...e: 如果设定了此修正符,preg_replace()在替换字符串中对逆向引用作正常的替换,将其作为 PHP代码求值,并用其结果来替换所搜索的字符串。...u(PCRE_UTF8): 模式字符串被当成UTF-8。 5、逻辑区隔: POSIX兼容正则和PERL兼容正则的逻辑区隔符号作用和使用方法完全一致: []:包含任选一操作的相关信息。...{}:包含匹配次数的相关信息。 ():包含一个逻辑区间的相关信息,可被用来进行引用操作。 |:表示“或”,[ab]和a|b是等价的。...:表示匹配前面的字符2次或4次 逻辑区间与“()”相关: 使用()包含起来的区域是一个逻辑区间,逻辑区间的主要作用是体现出一些字符出现的逻辑次序,另一个用处就是可以用来引用(可以将此区间内的值引用给一个变量

1.4K20

YAML 快速上手

缩进只允许使用空格,不允许使用 Tab 键。 缩进空格数可以任意,只要相同层级的元素左侧对齐即可。 字符串值一般不使用引号,必要时可使用。使用双引号表示字符串时,会转义字符串中的特殊字符(例如\n)。...使用单引号时不会转义字符串中的特殊字符。 数组中的每个元素单独一行,并以 - 开头。或使用方括号,元素用逗号隔开。注意短横杆和逗号后面都要有空格。 对象中的每个成员单独一行,使用键值对形式。...": "use.perl.org" } } 标量 标量是最基本、不可再分的值。...: 无引号 双引号 单引号 字符串默认不需要引号,但是如果字符串包含空格或特殊字符(如冒号),需要加引号。...如果字符串含有单引号,可以使用双引号包裹,反之亦然。 4.引用 锚点 & 和别名 *,可以用来完成引用。

23310
  • 浅谈Perl正则表达式

    大家好,又见面了,我是你们的朋友全栈君。 一、简介 Perl正则表达式中模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即Perl正则表达式中模式def。...~ =~检验匹配是否成功:$result=$var=~/abc/;若在该字符串中找到了该Perl正则表达式中模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。...12、Perl正则表达式中模式的部分重用 当Perl正则表达式中模式中匹配相同的部分出现多次时,可用括号括起来,用\n来多次引用,以简化表达式: /\d{2}([\W])\d{2}\1\d{2}/匹配:...x忽略Perl正则表达式中模式中的空白 注:e选项把替换部分的字符串看作表达式,在替换之前先计算其值,如: $string=”0abc1″; $string=~s/[a-zA-Z]+/$&x2/e;#...$string=~tr/\t//d;删除tab和空格;$string=~tr/0-9//cs;把数字间的其它字符替换为一个空格。

    1.1K30

    php面试题(1)

    ◆MySQL 5.0.15开始,如何处理 BINARY 字段中填充的值已经改变了。填充的值现在是0x00 而非空格了,并且在取值的时候不会去除末尾的空格。...–with-layout=TYPE 设置安装后的文件布局。TYPE 可以是 PHP(默认值)或者 GNU。...–with-gnu-ld 假定 C 编译器使用 GNU ld [default=no]。 –disable-libtool-lock 避免锁死(可能会破坏并行编译)。...e: 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。...{2,4}:表示匹配前面的字符2次或4次 逻辑区间与“()”相关: 使用()包含起来的区域是一个逻辑区间,逻辑区间的主要作用是体现出一些字符出现的逻辑次序,另一个用处就是可以用来引用(可以将此区间内的值引用给一个变量

    3.6K20

    Grep(Regex)中的正则表达式

    模式由运算符,构造文字字符和元字符组成,它们具有特殊的含义。 GNU grep支持三种正则表达式语法,Basic,Extended和Perl兼容。...请务必注意,grep会将搜索模式作为字符串而不是单词来查找。 因此,如果您要搜索“ gnu”,则grep还将打印“ gnu”嵌入较大字词(例如“ cygnus”或“ magnum”)的行。...如果搜索字符串包含空格,则需要将其用单引号或双引号引起来: $grep "Gnome Display Manager" /etc/passwd 锚定Anchoring Anchoring是元字符,可让您指定必须在该行中找到匹配项的位置...替换操作符| (pipe)允许您指定不同的可能匹配,可以是文字字符串或表达式集。该操作符在所有正则表达式操作符中优先级最低。...,可让您将模式分组在一起并将其作为一项引用。

    2.8K40

    Makefile学习2

    对于 GNU make内嵌的函数,直接引用就可以了;对于用户自定义的函数,要通过make的call函数来间接调用。 函数和参数列表之间要用空格隔开,多个参数之间使用逗号隔开。...给函数传递的参数在函数中使用 (0)、 (1)引用。 用户自定义函数使用call函数间接调用,各个参数之间使用空格隔开。...subst函数:用来实现字符串的替换,将字符串text中的old替换为new $(subst old,new,text) .PHONY: all SRC = $(wildcard *.c) OBJ...,使用通配符 % 代表一个单词中的若干字符,在PATTERN和REPLACEMENT如果都包含这个通配符,表示两者表示的是相同的若干个字符,并执行替换操作。...,一个字符串通常有多个单词,单词之间使用一个或多个空格进行分割,strip函数用来将多个连续的空字符合并成一个,并去掉字符串开头、末尾的空字符。

    33610

    Perl 工作积累(不定期更新)

    =cut 多行注释 特殊变量: $$     Perl解释器的进程ID @ARGV  保存命令行参数 @_    在子程序内,这个数组变量包含传递给子程序的参数 $_           默认输入...*$/ 如果想不用\ 去转义 /, . , 等特殊字符,可以 /\Q$var\E/ 在用 =~ 判断字符串包含时,需要注意是否包含空格等字符,特别是从文件中读出的时候,还要注意文件中的空白行 $context...secureCRT sz/rz 也会遇到目录权限的问题 5)倒数据不要全量重新倒,可以设定时间起始点甚至表自增id,从文件读出写入;当tmmp表为空时,perl sql执行以下语句返回还是为真,需要再次判断...eq     perl DBI 中的 my $ref = $sth->fetchrow_hashref();  $ref->{xxx} 返回的都是字符串?...', -1)  // 得到22 14) perl中的散列赋值都是引用拷贝而非值拷贝 15) perl打印shell脚本的结果信息之前需要先chomp结果,否则打印出来的信息不对 16)  取出url的后缀

    1.4K00

    《Linux与unix Shell编程指南》 总结

    ,而sed不能把说有的root替换 2、只在出现字符串fell字符串的前提下,将找到的行中的good替换为bad sed '/fell/ s/good/bad/g' awk '{if(/fell.../) gsub(/good/,"bad"); print $0 }' 3、只在不出现字符串fell字符串的前提下,将找到的行中的good替换为bad sed '/fell/ !...d;};x;/AAA\|BBB\|CCC/b;d' # 只对GNU sed有效 # 显示包含65个或以上字符的行 sed -n '/^.\{65\}/p' # 显示包含65个以下字符的行....*[:<] *//' # 在每一行开头加上一个尖括号和空格(引用信息) sed 's/^/> /' # 将每一行开头处的尖括号和空格删除(解除引用) sed 's/^> //' # 移除大部分的HTML....*[:空格(引用信息) sed 's/^/> /' # 将每一行开头处的尖括号和空格删除(解除引用) sed 's/^> //' # 移除大部分的HTML

    5.5K30

    vim 正则表达式

    设定方法为: :set magic " 设置magic :set nomagic " 取消magic :h magic " 查看帮助 vim毕竟是个编辑器,正则表达式中包含的大量元字符如果原封不动地引用...匹配包含换行在内的所有字符 \{-} 表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好 \= 匹配一个可有可无的项 \_s 匹配空格或断行 \_[]...因此,这个表达式的完整意义是,把连续的换行符(包含换行符前面可能有的连续 空白字符)替换成为一个单个的换行符。...替换的结果是个空格的目的是保证像“int/* space not necessary around comments */main()”这样的表达式在替换之后仍然是合法的。...将各行的 id 字符串替换为行号 :%s/\(^\\)/\=(line(".")-10) .".". submatch(1) 将每行开头的单词替换为(行号-10).单词的格式,如第11

    1.5K30

    R语言︱文本(字符串)处理与正则表达式

    对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 \n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。...否则,如果n为八进制数字(0-7),则n为一个八进制转义值。 \nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。...如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。...虽然sub和gsub是用于字符串替换的函数,但严格地说R语言没有字符串替换的函数,因为R语言不管什么操作对参数都是传值不传址。...其中参数old 表示原有字符串中内容;new 表示替换后的字符内容。

    4.2K20

    正则表达式介绍与使用

    安全拦截: 比如XSS,SQL注入以及playload-POC测试验证字符串的匹配拦截,常常出现在云waf和传统web的网站防火墙WAF中; 例如,您可能需要搜索整个网站,删除过时的材料以及替换某些 HTML...验证正则表达式工具: egrep #在Linux和windows平台中都有,值得注意的时候当egrep在正则匹配时候,会把换行符替换掉拼接下一行的字符; Perl #提供的元字符和操纵能力远远多于...y注意不要再[]中使用,此时他只是一个'|'字符而已;常常和分组符号连用() 基础实例: #实例1:转义符号的妙用,'n' 匹配字符 "n"。'...\n 标识一个八进制转义值或一个向后引用 #如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。...\nm 标识一个八进制转义值或一个向后引用 #如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。

    1.7K20

    正则表达式介绍与使用

    安全拦截: 比如XSS,SQL注入以及playload-POC测试验证字符串的匹配拦截,常常出现在云waf和传统web的网站防火墙WAF中; 例如,您可能需要搜索整个网站,删除过时的材料以及替换某些 HTML...验证正则表达式工具: egrep #在Linux和windows平台中都有,值得注意的时候当egrep在正则匹配时候,会把换行符替换掉拼接下一行的字符; Perl #提供的元字符和操纵能力远远多于egrep...\n 标识一个八进制转义值或一个向后引用 #如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。...\nm 标识一个八进制转义值或一个向后引用 #如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。...WeiyiGeek.xn 如果\n之前至少n个获取的子表达式,则n为向后引用否则,如果n为八进制数字(0-7),则n为一个八进制转义值的Ascll #如果前面的条件都不满足,若n和m均为八进制数字(0-

    1.2K10

    3分钟短文 | grep 入门用法,匹配多字符串,多正则模式

    引言 grep 是一种功能强大的命令行工具,可以在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出。 在本文中,我们将向你展示如何使用GNU grep搜索多个字符串或模式。...Grep多模式搜索 GNU grep支持三种正则表达式语法,Basic,Extended和Perl兼容。如果未指定正则表达式类型,grep则将搜索模式解释为基本正则表达式。...使用扩展正则表达式时,请不要转义|运算符: grep -E 'pattern1|pattern2' file... Grep多个字符串 文字字符串是最基本的模式。.../error.log 如果要搜索的字符串包含空格,请用双引号将其引起来。...搜索字符串时,grep将显示该字符串嵌入较大字符串中的所有行。

    1.3K30

    Grep 使用多种样式

    在本文中,我们将会向你展示如何使用GNU grep 来搜索多个字符串或者样式。 一、使用 Grep 搜索多个样式 GNU grep 支持三种正则表达式语法,基本的,扩展的,和兼容 Perl 的。...想要将样式解释为扩展的正则表达式,运行grep加上-E(或者--extended-regexp)选项。当使用扩展正则表达式,不要忘了|操作符。...Nginx log 中 搜索所有的fatal, error, 和 critical: grep 'fatal\|error\|critical' /var/log/nginx/error.log 如果你搜索的字符包含空格...(或者 --ignore-case): grep -i 'fatal\|error\|critical' /var/log/nginx/error.log 当搜索一个字符串时,grep将会显示所有包含该字符串的字符的行...所以,如果你搜索"error”,grep同时也会打印包含error的字符串的行,例如:“errorless” 和 “antiterrorists”。

    67310

    正则表达式详解

    e   如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。   ...对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。 \n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。...否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 \nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。...e: 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。...}:表示匹配前面的字符2次或4次 逻辑区间与“()”相关: 使用()包含起来的区域是一个逻辑区间,逻辑区间的主要作用是体现出一些字符出现的逻辑次序,另一个用处就是可以用来引用(可以将此区间内的值引用给一个变量

    1.4K10

    浅析JavaScript正则表达式

    JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能,JavaScript的正则表达式语法是Perl5的正则表达式语法的大型子集...| 等符号加以修饰,而且记住和这个组合相匹配的字符串以供此后的引用使用 (?:...)...中设置了修饰符g,则返回的数组包含字符串中的所有匹配结果,若没有g,就不会进行全局检索,只会检索第一个匹配。...9.RegExp对象 RegExp第一个参数包含正则表达式的主体部分,也就是直接量中两条斜线之间的文本,不论是字符串直接量还是正则表达式都使用 \ 字符作为转义字符的前缀, 因此当给RegExp()传入一个字符串表述正则表达式时...:是一个只读字符串,包含正则表达式的文本 global:是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g ignoreCase:是一个只读的布尔值,用以说明正则表达式是否带有修饰符i multiline

    1.6K30

    Kubernetes 之 YAML 语法

    : 'use.perl.org' } } YAML Copy 数据结构 对象: 键值对的字典 数组: 一组按次序排列的列表 纯量: 单个的且不可再分的值 # 纯量 hello # 数组 - Cat...str 字符串类型 5 !!null 空值 6 !!set 集合 7 !!seq 列表 8 !!map 键值表 9 !!binary 字符串类型 10 !!timestamp 日期时间类型 11 !!...pairs 键值列表 YAML 中的纯量 纯量是最基本的且不可再分的值 字符串 # 不适用引号 name: Tom # 使用单引号 name: 'Tom' # 使用双引号 name: "Tom"...hello\n hello hello\n\n YAML Copy # 注意“>”与文本之间的空格 # 使用>标注的文本内容缩进表示的块,将块中回车替换为空格最终连接成一行 value: > hello...YAML Copy 锚点与引用 # 复制代码注意*引用部分不能追加内容 # 使用&定义数据锚点,即要复制的数据 # 使用*引用锚点数据,即数据的复制目的地 name: &a yaml book: *a

    97010
    领券