【发布时间】:2017-09-24 00:36:24
【问题描述】:
我有一个像这样的文件test.txt(但包含更多行)
/foo/bar/how hello
/foo/bar/are hello
/foo/bar/you hello
我想得到这个输出:
/foo/bar/how how
/foo/bar/are are
/foo/bar/you you
我试过这个:
while read line
do
bla=$(echo $line | cut -f4 -d"/" | cut -f1 -d" ")
sed -i "s/hello/$bla/"
done <test.txt
但是输出是:
sed: no input files
sed: no input files
sed: no input files
当我提供文件名 (while read line; do bla=$(echo $line | cut -f4 -d"/" | cut -f1 -d" "); sed -i "s/hello/$bla/" test.txt ; done <test.txt) 时,我得到了这个:
/foo/bar/how how
/foo/bar/are how
/foo/bar/you how
我想用同一行之前出现的模式替换每行上的一些恒定模式,并且逐行变化。关于我如何做到这一点的任何想法(使用 sed 或 awk)?非常感谢!
【问题讨论】:
-
您需要在
sed -i "s/hello/$bla/"右侧向sed提供文件作为输入