我想更改以下可以长达数千行的文本列表。
目标是将NET1更改为NET66,但仅在具有NET1的12条线路上,而不更改NET10、NET11、NET12、NET13或其中具有NET1###的任何线路。
我试着用
sed -i s/NET1/NET66/g list
但它改变了所有线路中都有NET1(NET10改为NET660(谢谢你的帮助。
317NET1 1 M A01X+004115Y+016850X0280Y S0
017NET1 2 A04X+004115Y+016850X0280Y S0
017NET1 D0160PA00X+004115Y+016850 S0
317NET1 3 M A01X+004500Y+033650X0280Y S0
017NET1 4 A04X+004500Y+033650X0280Y S0
017NET1 D0160PA00X+004500Y+033650 S0
317NET2 5 M A01X+004405Y+020600X0280Y S0
017NET2 6 A04X+004405Y+020600X0280Y S0
017NET2 D0160PA00X+004405Y+020600 S0
327NET2 7 A01X+005010Y+020585X0560Y0220 S0
317NET3 8 M A01X+004405Y+021100X0280Y S0
017NET3 9 A04X+004405Y+021100X0280Y S0
017NET3 D0160PA00X+004405Y+021100 S0
327NET3 10 A01X+005010Y+021085X0560Y0220 S0
317NET4 11 M A01X+003408Y+026300X0500Y S0
017NET4 12 A04X+003408Y+026300X0500Y S0
017NET4 D0340PA00X+003408Y+026300 S0
317NET1 36 A01X+005615Y+024105X0280Y S0
017NET1 37 M A04X+005615Y+024105X0280Y S0
017NET1 D0160PA00X+005615Y+024105 S0
327NET10 38 A01X+005010Y+024085X0560Y0220 S0
317NET10 39 A01X+012305Y+019060X0280Y S0
017NET10 40 M A04X+012305Y+019060X0280Y S0
017NET10 D0160PA00X+012305Y+019060 S0
327NET10 41 A01X+012620Y+018218X0120Y0720 S0
317NET10 42 A01X+013105Y+033405X0280Y S0
017NET10 43 M A04X+013105Y+033405X0280Y S0
017NET10 D0160PA00X+013105Y+033405 S0
327NET10 44 A01X+012505Y+033400X0560Y0220 S0
317NET11 45 A01X+005600Y+024600X0280Y S0
017NET11 46 M A04X+005600Y+024600X0280Y S0
017NET11 D0160PA00X+005600Y+024600 S0
327NET11 47 A01X+005010Y+024585X0560Y0220 S0
317NET11 48 A01X+002208Y+025300X0500Y S0
017NET11 49 M A04X+002208Y+025300X0500Y S0
017NET11 D0340PA00X+002208Y+025300 S0
317NET11 50 A01X+013105Y+033890X0280Y S0
017NET11 51 M A04X+013105Y+033890X0280Y S0
017NET11 D0160PA00X+013105Y+033890 S0
327NET11 52 A01X+012505Y+033900X0560Y0220 S0
317NET11 53 A01X+004505Y+018850X0280Y S0
017NET1 54 M A04X+004505Y+018850X0280Y S0
017NET1 D0160PA00X+004505Y+018850 S0
317NET12 55 M A01X+004365Y+025105X0280Y S0
017NET12 56 A04X+004365Y+025105X0280Y S0
017NET12 D0160PA00X+004365Y+025105 S0
327NET1 57 A01X+005010Y+025085X0560Y0220 S0
317NET13 58 M A01X+004365Y+025600X0280Y S0
017NET13 59 A04X+004365Y+025600X0280Y S0
使用awk
:
awk '{sub(/NET1$/, "NET66", $1)}1' file > outfile
即删除第一个字段末尾的NET1
,然后打印记录。
或使用sed
:
sed -i 's/^([0-9]*)NET1([[:space:]])/1NET662/' file
^([0-9]*)NET1([[:space:]])
只在行首的数字后面以及后面跟着空白字符时与NET1
匹配。CCD_ 6和CCD_。