【发布时间】:2018-12-18 04:04:58
【问题描述】:
对 linux 相当陌生,我很抱歉。
我有一个这样的文件:
1 C foo C bar
2 C foo C bar
3 C foo C bar
4 H foo H bar
5 H foo H bar
6 O foo O bar
我需要让它成为:
1 C01 foo C bar
2 C02 foo C bar
3 C03 foo C bar
4 H01 foo H bar
5 H02 foo H bar
6 O01 foo O bar
**遗憾的是 foo 和 C 之间的间距以及 C 和 bar 之间的间距必须保持。
我以分段方式尝试过,我从中提取出包含不同标识符 C、H 和 O 的行,并将它们放在一个临时文件中。然后我尝试按出现顺序排列它们,然后将原始文件重新拼接在一起。
#!/bin/bash
sed -i -e "/ C /w temp1.txt" -e "//d" File.txt
sed -i -e "/ H /w temp2.txt" -e "//d" File.txt
sed -i -e "/ O /w temp3.txt" -e "//d" File.txt
`awk -i '{print NR $2}' temp1.txt
awk -i '{print NR $2}' temp2.txt
awk -i '{print NR $2}' temp3.txt
cat temp1.txt >> File.txt
cat temp2.txt >> File.txt
cat temp3.txt >> File.txt
但是我很确定我的语法很糟糕,因为我真的只熟悉 sed 而不是 awk。
任何帮助将不胜感激,谢谢。
【问题讨论】: