bash,用于更改文件中的行的工具

问题描述 投票:-1回答:3

是否可以在文件中使用一些linux工具更改行,如下所示:

是:

status:<whatever>

成为:

status:"red"

更新最佳解决方案:

awk 'BEGIN{FS=OFS=":"} $1 ~ /status/ {$2="\"red\""}1' file

这将打印输出,我们可以将其重定向到文件或其他。

bash awk sed
3个回答
1
投票

如果您的Input_file与显示的示例相同,那么以下内容可能对您有所帮助。

echo "status:<whatever>" | sed 's/\(.*:\)\(.*\)/\1"red"/g'

1
投票

sed is the Stream EDitor,其目的是编辑文本流,而不是文本文件。这真的是错误的工具。你应该使用text file editor such as ed代替:

ed -- /path/to/file <<-HERE
   ,s/^status:.*/status:"red"
    w
    q
HERE

1
投票

使用GNU sed:

sed -E 's/^(status:).*/\1"red"/' file

用字符串:

s="red"
sed -E 's/^(status:).*/\1"'"${s//\//}"'"/' file

如果要“就地”编辑文件,请使用sed的选项-i

© www.soinside.com 2019 - 2024. All rights reserved.