这可能是一个非常愚蠢的问题,但在Bash中我想做以下替换:
我在一些文件中有这一行:
日期:2009年1月12日,天气20°C
我希望将其更改为
日期:XXXX
使用sed我想我必须说“在DATE之后开始:”,请删除其余内容并插入“XXXX”。
这种方法是否正常,我该如何进行?
另外,我想学习。如果你在我的情况下你会做什么?在这里问或花一个小时查看手册页?你从哪里开始?
答案 0 :(得分:3)
尝试:
sed -i 's/^DATE:.*$/DATE: XXXX/g' filename
回答第二个问题取决于你需要多久写一次这样的东西。如果这是一次性事情并且时间有限,那么最好在这里问一下。如果没有,最好通过使用在线教程来学习如何做到这一点。
答案 1 :(得分:1)
while read line
do
echo "${line/#DATE*/DATE:xxxxx}"
done < myfile
答案 2 :(得分:0)
您也可以使用以下代码
> var="DATE: 12 jan 2009, weather 20ºC"
> echo $var | sed -r 's!^(DATE:).*$!\1 XXXX!'
答案 3 :(得分:0)
你可以使用shell
while IFS=":" read -r a b
do
case "$a" in
DATE* ) echo "$a:XXXX";;
*) echo "$a$b" ;;
esac
done < "file"
或awk
$ cat file
some line
DATE: 12 jan 2009, weather 20ºC
some line
$ awk -F":" '$1~/^DATE/{$2="XXXX"}1' OFS=":" file
some line
DATE:XXXX
some line
答案 4 :(得分:0)
如果您的行不在文件中,则可以不使用sed执行此操作:
var="DATE: 12 jan 2009, weather 20ºC"
echo "${var/DATE:*/DATE:xxxxx}"