尝试复制行并修改新复制的行

时间:2015-11-16 14:54:58

标签: shell awk sed

我有以下文本文件:

aaaaa dddd  xxxxxx
ddddd rrrr  xxxxxx
wwwww eeee  xxxxxx

我希望输出如下:

aaaaa dddd  xxxxxx
aaaaa dddd  yyyyyy
ddddd rrrr  xxxxxx
ddddd rrrr  yyyyyy
wwwww eeee  xxxxxx
wwwww eeee  yyyyyy

2 个答案:

答案 0 :(得分:3)

可能的解决方案可能如下所示:

$0

在此解决方案中,我们首先打印每一行($1, $2),然后我们添加一个记录分隔符(RS,默认情况下等于换行符),然后我们重复第一列和第二列{{1} }。最后,我们手动添加字符串“yyyyyy”。

以下是示例输出:

aaaaa dddd  xxxxxx
aaaaa dddd  yyyyyy
ddddd rrrr  xxxxxx
ddddd rrrr  yyyyyy
wwwww eeee  xxxxxx
wwwww eeee  yyyyyy

当然,如果需要,我们可以使用正则表达式自动将x替换为y

awk -F" " '{a=$3; gsub(/x/,"y",a); print $0 RS $1,$2," "a}' inputfile

答案 1 :(得分:2)

这可能适合你(GNU sed):

sed 'p;s/x/y/g' file

打印该行,然后将所有x替换为y,然后重新打印。

或者也许:

sed '/x/p;s//y/g' file