通过删除中间的换行符,基于正则表达式模式匹配在 Unix 中加入文本文件中的两行

Join two lines in a text file in Unix based on regex pattern matching by removing the newline character in between

我想在 Unix 中对文件执行以下查找和替换操作

Find:   (\n)(^[^T])
Replace:  \t

例如,

Time table
DataColumn

变成

Time table     DataColumn

这适用于像 TextPad 这样的文本编辑器,但是,有什么方法可以在单行命令中做到这一点吗?例如,类似于:

sed 's/\(\n\)\(^[^T]\)/\t/g' tmpfile2.txt    

这可能对你有用 (GNU sed):

sed 'N;s/\n\([^T]\)/\t/;P;D' file

这会用制表符和整个文件中的非 T 字符替换换行符后跟非 T 字符。

使用:

perl -0pe 's/\n/\t/' file
Time table      DataColumn

既然建议了sed和perl,那么awk来了:

awk '/^T/{value=[=10=]; getline; [=10=]= value "\t" [=10=];} {print}'