祝大家好日子
我想知道如何更换特定行号的换行符.
到目前为止我已经完成了:[Linenumber = 11]
sed ':a;N;$!ba;11s/\n//g'
Run Code Online (Sandbox Code Playgroud)
提前感谢任何线索
好吧,如果你知道行号,那么它在任何语言中都非常简单:
$ cat file
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
使用sed
:
$ sed '3{N;s/\n//;}' file
1
2
34
5
Run Code Online (Sandbox Code Playgroud)
在sed
,您可以使用数字作为表示行号的模式.我们可以将操作包含在大括号内,以便只在模式为true时才会发生.这里3
代表第3行.括号内是我们的动作,表示N
将下一行附加到由新行分隔的图案空间.这时我们已经line 3\nline4
进入了模式空间.我们跟进一个简单的替换,用什么都不替换换行符.
使用awk
:
$ awk 'NR==3{printf "%s", $0; next}1' file
1
2
34
5
Run Code Online (Sandbox Code Playgroud)
awk
也包括模式行动声明.在这里,我们使用NR==3
我们的模式.NR
是awk
内置变量,它保存当前行号.当行号为3时,我们要求awk
采取具体行动.我们的行动是在大括号内.我们使用printf
哪个明确需要换行符.next
允许我们移动到下一行.1
最后是一个awk
成语,触发默认的打印动作.对于与我们的图案不匹配的所有线条,我们按原样打印它们.因为它使用print
它为我们添加换行符.
使用perl
:
$ perl -pe 'chomp if $.==3' file
1
2
34
5
Run Code Online (Sandbox Code Playgroud)
随着perl
我们使用了两个选项.-p
创建一个隐式while(<>) { print }
循环来处理我们文件的每一行.-e
告诉perl
解释器执行它后面的代码.$.
in perl
保存当前行号.chomp
是一个内置函数,它删除尾随换行符.所以,当我们的行数是3,我们要求perl
以chomp
换行符我们.所有其他行按原样打印.
归档时间: |
|
查看次数: |
474 次 |
最近记录: |