如何用shell脚本中的空格替换整个句子

时间:2014-03-23 04:28:37

标签: shell unix ksh

我是这个平台的新手。只是有一个要求,我一直在工作,但无法找到它。

如果这种模式发生在一条线的中间。如何处理它。假设线条像。 aaaa ---- bbbb。如果我想擦除---- bbbb部分怎么做。但我想保留文件中的aaaa部分。

由于

4 个答案:

答案 0 :(得分:4)

您可以使用sed轻松完成:

sed -r 's/^--.*//' inputfile > outputfile

或到位:

sed -r -i.bak 's/^--.*//' inputfile

这将在修改文件

之前创建inputfile.bak作为备份

答案 1 :(得分:2)

这是一个很好的旧bash解决方案:

while read -r line; do 
    echo "${line/#--*/}"
done < inputFile > outputFile

答案 2 :(得分:1)

使用awk的一种方式:

awk '/^--/{$0=" ";}1' file

当以 -

开头时,这将用空格替换该行

答案 3 :(得分:0)

从您的问题陈述中不清楚解决方案的标准(限制)是什么。 您正在寻找的是支持正则表达式的东西。有许多UNIX / Linux工具可用于解决此问题。

一个简单的解决方案是:

# cat file.txt | sed -e "{s/^--.*/ /}"

正则表达式&#34; ^ - 。&#34;将匹配任何行开头&#34; ^&#34;用&#34; - &#34;其次 任意数量的字符&#34;。&#34;。 &#34; S&#34;是sed替换命令。

所以&#34; s /^--.*/ /&#34;意味着,替换以 - 开头的所有行 - 并且后面跟着任何行 单个空格的字符数。