我创建了一个脚本,在每行末尾添加100个空格字符:
#!/bin/ksh
sed -i -e 's/\n/ - 100 spaces - /' $1
但它不起作用,我认为这是因为\n
。有什么想法吗?
答案 0 :(得分:2)
Sed处理行的内容而不用换行符。您的代码永远不会看到换行符,因此无法替换它。
匹配字符串的结尾:
sed -i -e 's/$/ - 100 spaces - /' $1
答案 1 :(得分:1)
虽然Karoly已经在你的脚本中指出了错误,但你也可以通过使用条件和break来节省自己输入100个空格来进行循环
sed ':1;/ \{100\}$/!{s/$/ /;b1}' file
将在行尾打印100个空格
如果最后已经有空格而您想添加100
sed 's/$/1/;:1;/1 \{100\}$/!{s/$/ /;b1};s/1\( *\)$/\1/' file
答案 2 :(得分:0)
只是建议避免输入100个空格(虽然我确定到目前为止,你已经有了!) - 使用perl:
<a href='' class=' ' title='Coroner's Request' >
正如其他答案所述,这匹配行的末尾并替换为100个空格,使用perl -pe 's/$/" " x 100/e' file
修饰符允许您编写e
并让perl为您完成工作。
与sed一样,您可以使用" " x 100
开关就地修改文件 - 与sed一样,我建议使用类似-i
的内容来创建备份文件{{1 }}
答案 3 :(得分:0)
可能是POSIX未定义的\n
,因此实现依赖于seds但你也说你想在脚本尝试用空格替换行尾时添加空格到行尾。
在任何情况下,这都不是sed的工作,只需在awk中使用[s]printf("%100s","")
来创建一个包含100个空格的字符串,例如:
$ echo "foo bar" | awk '{printf "%s%10s%s\n", $1, "", $2}'
foo bar