在具有特定字符串的行前面添加字符

  • 本文关键字:前面 添加 字符 字符串 bash
  • 更新时间 :
  • 英文 :


示例,

我有一个文件测试,带有三行,例如

Tell:you are the one
Great! that helped me
you:me are the one to go

在此文件中,我喜欢搜索字符串" you:me",在找到它之后,它必须在#之前附加#

就像这样

Tell:you are the one
Great! that helped me
#you:me are the one to go

预先感谢

您可以简单地使用正则表达式:

sed 's/^you:me/#you:me/' thefile.txt

我在这里假设you:me始终处于线路的开头,否则如果要匹配所有you:me S:

sed 's/you:me/#you:me/g' thefile.txt

使用sed

sed 's/you:me/#&/' file

我会做:

sed '/you:me/s/^/#/'

这将找到一个包含you:me的行,无论它是在开始还是中间,在行开头添加#

so

foo you:me bar -> #foo you:me bar
you:me foo -> #you:me foo

正如其他答案所建议的,我会使用sed。但是,如果您正在寻找纯bash解决方案,请使用以下方式:

while read line; do
    if [[ "$line" == "you:me"* ]]; then
        echo "#$line"
    else
        echo "$line"
    fi
done

Chepner建议,您可以用bash替换替换IF结构:

while read line; do
    echo "${line/#you:me/#you:me}
done

如评论中所述:第一个哈希是一个标志,表明匹配应在$line的开头,第二个是我们要放在行前面的字面哈希。

这是一个尴尬的选择,仅仅是因为:

awk '/you:me/ { print "#"$0 }'

相关内容

  • 没有找到相关文章

最新更新