unix tr查找并替换

Kam*_*224 9 unix awk sed tr

这是我在网上使用的标准网页上使用的命令.

tr '<' '\n<' < index.html
Run Code Online (Sandbox Code Playgroud)

然而它给了我换行,但没有再添加背胡萝卜.例如

 echo "<hello><world>" | tr '<' '\n<'
Run Code Online (Sandbox Code Playgroud)

回报

 (blank line which is fine)
 hello>
 world>
Run Code Online (Sandbox Code Playgroud)

代替

 (blank line or not)
 <hello>
 <world>
Run Code Online (Sandbox Code Playgroud)

谢谢

eph*_*ent 23

那是因为tr只有字符替换(或删除).

试试吧sed.

echo '<hello><world>' | sed -e 's/</\n&/g'
Run Code Online (Sandbox Code Playgroud)

或者awk.

echo '<hello><world>' | awk '{gsub(/</,"\n<",$0)}1'
Run Code Online (Sandbox Code Playgroud)

或者perl.

echo '<hello><world>' | perl -pe 's/</\n</g'
Run Code Online (Sandbox Code Playgroud)

或者ruby.

echo '<hello><world>' | ruby -pe '$_.gsub!(/</,"\n<")'
Run Code Online (Sandbox Code Playgroud)

或者python.

echo '<hello><world>' \
| python -c 'for l in __import__("fileinput").input():print l.replace("<","\n<")'
Run Code Online (Sandbox Code Playgroud)

  • @Jaypal 8 个空格的字符串不等于制表符;你需要一个文字制表符。8 个空格是关于制表位,而不是制表符。 (2认同)