Bash:将不同的字符串附加到文件中的特定行

时间:2018-01-09 04:54:38

标签: string bash awk sed append

让我们说我的文件看起来像这样:

The
Way
Direct
5.0 0.0 3.0
2.0 0.0 0.0
0.0 0.0 1.0
0.0 0.0 2.0
3.0 4.0 6.0
0.000 1.000 2.000
1.0 2.0 3.0
4.0 5.0 6.0
3.0 2.0 0.0

我想改变它,看起来像这样:

The
Way
Direct
5.0 0.0 3.0 U
2.0 0.0 0.0 U
0.0 0.0 1.0 U
0.0 0.0 2.0 U
3.0 4.0 6.0 U
0.000 1.000 2.000 A
1.0 2.0 3.0 A
4.0 5.0 6.0 A
3.0 2.0 0.0 A

所以在线"直接,"我有" U"附加到下一个x行,然后在" 0.000 1.000 2.000"我追加了#34; A"这条线以及之后的所有线条。另一种看待它的方法是我追加" U"到第4-8行并附加" A"到9-12。

似乎awk可能是最好的方法。我知道如果我使用" sed -e' s / $ / U /',它会将U附加到所有行的末尾......但是有没有办法执行此操作特定的行,以及追加" A"?谢谢!

编辑:我也尝试使用sed -n' 4,9p'来挑选特定的行。但是,我不知道如何将其添加到添加字符串中,如:sed -n' 4,8p' | sed -e' s / $ / U /' myfile.txt的。但是,这会将U附加到所有行。

1 个答案:

答案 0 :(得分:0)

sed '4,8 s/$/ U/; 9,$ s/$/ A/;'

4,8,选择第4到第8行,

9,$,选择从9到文件末尾的行