我有一个类似的文件:
72810 82:28:1
this is text
hello world
72810 82:28:12
some more text
hello wolrd again
我需要在包含72810 *的行中替换换行符 但有一个问题:我尝试过以下方法:
sed 's/\n/ /g' myfile.txt
但这不起作用。
我也尝试过:
cat myfile.txt | perl -p -e 's/72810.*\n/72810 /g'
但是这并没有保存完整的原始文本(在这种情况下为72810 82:28:1或72810 82:28:12)。
我需要做什么才能最终得到如下文件:
72810 82:28:1 this is text
hello world
72810 82:28:12 some more text
hello world again
顺便说一下,我正在使用solaris。
答案 0 :(得分:2)
试试这个:
perl -ne 'if (m/72810/) {s/\n/ /; print} else { print }' input.txt
或者更短的版本:
perl -pe 's/\n/ / if m/72810/' input.txt
您可以使用-i
选项来编辑input.txt
。
答案 1 :(得分:2)
在包含测试字符串的所有行上替换换行符似乎最简单。喜欢这个
perl -pe "s/\n/ / if /72810/" myfile.txt
<强>输出强>
72810 82:28:1 this is text
hello world
72810 82:28:12 some more text
hello wolrd again
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '/^72810/{N;s/\n/ /}' file