将数字替换为Sed,将数字列表(例如1)更改为1000,并使用可能重复的数字,但只能使用1而不是11或2而不是22
我想更改以下文本列表,这些文本可以长达数千行 目标是将NET1更改为NET66,但仅在具有NET1的12条线路上更改,而不更改NET10、NET11、NET12、NET13或其中包含NET1的任何线路 我试着用将数字替换为Sed,将数字列表(例如1)更改为1000,并使用可能重复的数字,但只能使用1而不是11或2而不是22,sed,replace,numbers,Sed,Replace,Numbers,我想更改以下文本列表,这些文本可以长达数千行 目标是将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
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'文件>输出文件
即,删除第一个字段末尾的NET1
,然后打印记录
或使用sed
:
sed-i的/^\([0-9]*\)NET1\([[:space:]\)/\1NET66\2/'文件
^\([0-9]*\)NET1\([[:space:][]\)
仅匹配行开始处的数字后以及后跟空白字符时的NET1
<代码>\1和\2
是用于还原结果中捕获的值的占位符。使用awk
:
awk'{sub(/NET1$/,“NET66”,$1)}1'文件>输出文件
即,删除第一个字段末尾的NET1
,然后打印记录
或使用sed
:
sed-i的/^\([0-9]*\)NET1\([[:space:]\)/\1NET66\2/'文件
^\([0-9]*\)NET1\([[:space:][]\)
仅匹配行开始处的数字后以及后跟空白字符时的NET1
\1
和\2
是用于还原结果中捕获的值的占位符。欢迎这样做,请在您的问题中以代码的形式添加您的努力,这是非常鼓励的。我试图使用Sed-I s/NET1/NET66/g列表,但它更改了所有行中都有一个NET1(NET10更改为NET660)我可能已经用sed s/NET1[[:space:]/NET66/g zz解决了这个问题。请检查下面的答案,如果它有效,请接受/upvote。欢迎这样做,请在你的问题中以代码的形式添加你的努力,这是非常受鼓励的。我试图使用sed-I s/NET1/NET66/g列表,但它改变了所有行中都有一个NET1(NET10改为NET660)我可能已经用sed s/NET1[[:space:]/NET66/g zz解决了这个问题。请检查下面的答案,如果它有效,请接受/投票。