Saya memiliki file teks bernama xid.txt
:
xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Saya perlu menambahkan string 'PT_' sebelum 'SC48028', 'SC32173' ... seterusnya. String 'SC ...' dapat dimulai dengan kombinasi apa saja yang mungkin 'AC ...' atau 'DL ..'
Output yang dibutuhkan:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Jika Anda melihat output di atas, kita tidak boleh memasukkan 'PT_' sebelum string yang dimulai dengan 'i', 'p', 'w' & 'numerik'. Saya telah mencoba beberapa perintah dasar untuk kebutuhan saya menggunakan insert / append in sed.
text-processing
awk
sed
Subrat Sahoo
sumber
sumber
Jawaban:
Dengan awk :
Hasil:
$2~/^[A-Z][A-Z]/
- jika bidang ke-2 dimulai dengan 2 huruf besarAtau pendekatan sed :
sumber
awk '$2~/^[A-Z]{2}/{ $2="PT_"$2 }1' xid.txt > xid-tmp && mv xid-tmp xid.txt
atau gunakan pendekatan kedua sayaawk
(yang biasanya Anda instal pada sistem Linux) memiliki-i inplace
yang memungkinkan Anda untuk mengedit file di tempat, seperti sed dan perl-i
.-i inplace
(Saya telah menyarankan pendekatan terpadu denganmv
perintah untuk OP agar sesuai dengan portabilitas). AdapunBioinformatics beta
komunitas: Saya baru saja bergabung. Mungkinkah ada tugas yang berkaitan dengan pemrograman / pemrosesan Linux / Python? Bagaimana menurut Anda?Opsi sed
dimana
-i
edit di tempat-e
perintah untuk dieksekusisumber