Vij*_*jay 13 unix shell awk sed
我的模式如下
hi
hello
hallo
greetings
salutations
no more hello for you
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下命令替换所有换行符
sed -e "s_/\n_/\t_g"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有人可以帮忙吗?我正在寻找sed/awk的解决方案.
Tel*_*hus 40
tr
我认为这里更好:
tr "\n" "\t" < newlines
Run Code Online (Sandbox Code Playgroud)
正如Nifle在评论中建议的那样,newlines
这里是保存原始文本的文件的名称.
因为它sed
是面向行的,所以在这种情况下使用会更复杂.
gho*_*g74 12
不确定你想要的输出
# awk -vRS="\n" -vORS="\t" '1' file
hi hello hallo greetings salutations no more hello for you
Run Code Online (Sandbox Code Playgroud)
您无法逐行替换换行符sed
.您必须累积行并替换它们之间的换行符.
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
Run Code Online (Sandbox Code Playgroud)
此sed
脚本累积所有行并删除所有换行但最后一行:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你的sed
脚本sed -e "s_/\n_/\t_g"
试图说"用斜杠替换所有斜杠后跟换行符后跟选项卡".下划线正在扮演s
命令的分隔符的角色,以便斜杠可以更容易地用作搜索和替换的字符.
paste -s
Run Code Online (Sandbox Code Playgroud)
-s 按命令行顺序连接每个单独输入文件的所有行。每个输入文件中除最后一行之外的每一行的换行符都将替换为制表符,除非 -d 选项另有指定。