在bash中更改文本文件中的一部分行

时间:2013-04-09 14:52:53

标签: bash variables sed text-files field

我在文本文件中有一行,例如:

  

ABCDE:jhdfj $ jhbsfiy / .hghi $ JH:12345:dgve ::

我希望用变量替换第3个字段12345。没有接触到其余部分而没有将任何内容复制到变量中......有帮助吗?是的,这本质上是一个单一的问题:)

3 个答案:

答案 0 :(得分:0)

此行应符合您的要求:

awk -F: '{$3="55555"}1' OFS=":" file

55555是新字符串。

答案 1 :(得分:0)

这应该有效:

v="new val"
echo "abcde:jhdfj$jhbsfiy/.hghi$jh:12345:dgve::" | awk -F: -v new=${v} 'OFS=FS; $3=new'

答案 2 :(得分:0)

sed -i "s/:[0-9]*:/:$VAR:/1" INPUTFILE

其中$ VAR包含您想要用。替换第三个字段的内容。

sed -i "s/:[0-9]*:/:NewText:/1" INPUTFILE

其中NewText是您要替换的金额。

如果你想在stdin上做,那么你可以

echo "stdin Teststring" | sed -i "s/:[0-9]*:/:$VAR:/1"