如何将文本文件中+号所在行与下一行内容合并?
解决行合并问题
正确的awk命令
你之前的awk命令有两个问题:一是+属于正则元字符,需要用\+转义才能匹配;二是逻辑错误,你当前是分别打印两行,而非合并输出。正确写法如下:
{ if ($0 ~ /\+$/) { sub(/[[:space:]]*\+$/, "") # 移除行尾的空格和+号 getline next_line # 读取下一行内容 print $0, next_line # 合并两行输出 } else { print $0 # 无+号的行直接输出 } }
执行时直接运行:awk -f script.awk A1.txt 或者单行命令:
/\+$/ { sub(/[[:space:]]*\+$/, ""); getline; print $0, $0; next } 1 A1.txt
替代方案:sed命令
如果习惯用sed,也可以实现相同效果:
/\+$/ { s/[[:space:]]*\+$// N s/\n[[:space:]]*/ / }
执行命令:sed -f script.sed A1.txt
关于谷歌网盘分享的规则
Stack Exchange系列论坛(含Stack Overflow)允许分享公开的文件链接,只要内容符合社区规范(非恶意文件、不侵权、与问题强相关)就不会违规。不过更推荐直接在问题里用<pre><code>标签粘贴示例文本,这样其他用户无需跳转就能查看内容,排查问题更高效。
内容的提问来源于stack exchange,提问作者ash
相关产品推荐
相关产品推荐

