使用 sed,如何在给定文件的每一行中替换第 N 个到最后一个字符?
在这种情况下,我想更换3到最后;
与,
输入
1;2;3;4;5;6;7;8;9
10;20;30;40;50;60;70;80;90
100;200;300;400;500;600;700;800;900
Run Code Online (Sandbox Code Playgroud)
预期产出
1;2;3;4;5;6,7;8;9
10;20;30;40;50;60,70;80;90
100;200;300;400;500;600,700;800;900
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样替换第 6 次出现
sed 's/;/,/6' input_file.csv > output_file.csv
Run Code Online (Sandbox Code Playgroud)
或者最后一个
sed -r 's/(.*);/\1,/' input_file.csv > output_file.csv
Run Code Online (Sandbox Code Playgroud)
但在我的特殊情况下,由于一些细微差别,我需要从最后开始。
我试过类似的东西
sed -r 's/(.*);/\1,/3' input_file.csv > output_file.csv
Run Code Online (Sandbox Code Playgroud) 我有一个这样的文件:
method AAA one (1,111):
some_text_1
method BBB two (2,
222):
tuesday
method CCC three (3,
333):
sunny_day
method DDD four (4,
444_a,
444_b):
last_week
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
method AAA one (1,111):
some_text_1
method BBB two (2,222):
tuesday
method CCC three (3,333):
sunny_day
method DDD four (4,444_a,444_b):
last_week
Run Code Online (Sandbox Code Playgroud)
我有这个 sed 命令几乎可以做到:
sed -i '/method/,/):/ p; :a; N; $!b a; s/\n\s\{1,\}//g' file.txt
Run Code Online (Sandbox Code Playgroud)
它给出了这个输出:
method AAA one (1,111):
method AAA one (1,111):some_text_1
method BBB two (2,222):tuesday
method CCC three (3,333):sunny_day
method DDD four (4,444_a,444_b): …
Run Code Online (Sandbox Code Playgroud) 我们如何使用 AWK 提取 nginx 服务器块?输入
server { # php/fastcgi
listen 80;
server_name domain1.com www.domain1.com;
access_log logs/domain1.access.log main;
root html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:1025;
}
}
server { # simple reverse-proxy
listen 80;
server_name domain2.com www.domain2.com;
access_log logs/domain2.access.log main;
# serve static files
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/big.server.com/htdocs;
expires 30d;
}
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Run Code Online (Sandbox Code Playgroud)
我们如何匹配所需的值并为每个 server{} 块打印一行?
例如
我需要获取listen|root|server_name 的值。所需的输出是
80 domain1.com www.domain1.com html …
Run Code Online (Sandbox Code Playgroud)