Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
Linux 使用sed更改带有空格的短语_Linux_Bash_Sed - Fatal编程技术网

Linux 使用sed更改带有空格的短语

Linux 使用sed更改带有空格的短语,linux,bash,sed,Linux,Bash,Sed,我是linux的新手,正在努力学习。我有一个文本文件,其中包含每天生成的日期,但这些日期都是固定的,因此我希望通过运行bash脚本来更改文本文件中的特定日期 我认为将sed与语法结合使用: sed -i 's/01 January 1970/27 October 2017/' 但它似乎不起作用 这是源文件行: #01 January 1970:-JOB1011,Complete&Successful 这就是我希望它一旦被改造后的样子: #27 October 2017:-JOB10

我是linux的新手,正在努力学习。我有一个文本文件,其中包含每天生成的日期,但这些日期都是固定的,因此我希望通过运行bash脚本来更改文本文件中的特定日期

我认为将sed与语法结合使用:

sed -i 's/01 January 1970/27 October 2017/' 
但它似乎不起作用

这是源文件行:

#01 January 1970:-JOB1011,Complete&Successful
这就是我希望它一旦被改造后的样子:

#27 October 2017:-JOB1011,Successful
有什么建议吗


非常感谢

如果您的数据文件是“x”,我希望

sed -i 's/01 January 1970/27 October 2017/' x
工作:

$ cat x
#27 October 2017:-JOB1011,Complete&Successful
如果这不是您看到的,那么您使用的是什么版本的linux和sed

$ sed --version
GNU sed version 4.2.1
...
$ uname -srv
Linux 2.6.32-696.6.3.el6.x86_64 #1 SMP Fri Jun 30 13:24:18 EDT 2017

如果您的数据文件是“x”,我希望

sed -i 's/01 January 1970/27 October 2017/' x
工作:

$ cat x
#27 October 2017:-JOB1011,Complete&Successful
如果这不是您看到的,那么您使用的是什么版本的linux和sed

$ sed --version
GNU sed version 4.2.1
...
$ uname -srv
Linux 2.6.32-696.6.3.el6.x86_64 #1 SMP Fri Jun 30 13:24:18 EDT 2017

您的命令对我有效。为什么要删除
Complete&
?这是一个复制错误吗?对我来说也适用,在命令末尾添加了重要的文件名。也许这与你的问题有关?我试着改变日期,结果成功了!但是,当我包含带有符号的状态时,我认为我犯了一个错误。如果你想要一个文本
&
,你需要避开它<代码>\&您的命令对我有效。为什么要删除
Complete&
?这是一个复制错误吗?对我来说也适用,在命令末尾添加了重要的文件名。也许这与你的问题有关?我试着改变日期,结果成功了!但是,当我包含带有符号的状态时,我认为我犯了一个错误。如果你想要一个文本
&
,你需要避开它
\&
sed(GNU sed)4.2.2 Linux 4.4.50-v7+#970 SMP Mon Feb 20 19:18:29 GMT 2017语法适用于日期转换,但是如果我更改状态,并且状态从成功变为完成&成功,我会得到以下信息:#2017年10月27日完成1970年1月1日成功:-JOB1011,完整和成功是“&”引入了这一点,我如何纠正它?如上所述,@zzxyz有一个特殊的含义,需要用\&来转义。它通常用于将长时间运行的进程放在后台,以便返回提示。它也是一些输出重定向操作(搜索“bash输出重定向”)sed(GNU sed)4.2.2 Linux 4.4.50-v7+#970 SMP Mon Feb 20 19:18:29 GMT 2017语法用于日期转换,但是,如果我改变状态,并且状态从成功变为完成&成功,我会得到以下信息:#2017年10月27日完成1970年1月1日成功:-JOB1011,完成&成功是引入此的“&”,我如何纠正它?正如@zzxyz所述,&具有特殊的意义,需要用\&”转义。它通常用于将长时间运行的进程放在后台,以便返回提示。它也是一些输出重定向操作的一部分(搜索“bash输出重定向”)