实施例,
我有三行文件测试,如
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
先谢谢
答案 0 :(得分:1)
你可以用正则表达式来做到这一点:
sed 's/^you:me/#you:me/' thefile.txt
我假设you:me
总是在行的开头,否则如果你想匹配所有you:me
:
sed 's/you:me/#you:me/g' thefile.txt
答案 1 :(得分:1)
使用sed
sed 's/you:me/#&/' file
答案 2 :(得分:1)
正如其他答案所示,我会使用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
的开头,第二个是我们想要放在行前面的文字哈希。
答案 3 :(得分:1)
我愿意:
sed '/you:me/s/^/#/'
这会找到包含you:me
的行,无论是在开头还是中间,在行的开头添加#
所以
foo you:me bar -> #foo you:me bar
you:me foo -> #you:me foo
答案 4 :(得分:0)
这是一个awk替代方案,仅仅因为:
awk '/you:me/ { print "#"$0 }'