5

我有一个文件输出以下形式的行:

$XYZ blah blah blah
$XYZ something
$XYZ random data

“$XYZ”前缀对于每一行都是相同的,它确实以美元符号开头,而且除了一行的开头之外,它几乎不可能出现在任何地方。

我可以获取此文件的唯一方法是通过屏幕截图,这会导致行以 80 个字符换行。所以它看起来像下面这样(如果你假设 wrapping 的数字小于 80):

$XYZ blah bl
ah blah
$XYZ somethi
ng
$XYZ random 
data

我想从中重新创建真实的线条。我可以编写一个程序来执行此操作,但我认为可能有一些我不熟悉的 Unix 命令可能会使它变得容易。有任何想法吗?

提前致谢。

4

3 回答 3

4

首先,将所有行合并为一个长行,然后在您看到应该是行首的单词的任何地方添加一个换行符,如下所示:

tr -d '\n' < file | sed 's/XYZ/\nXYZ/g'
于 2012-10-25T14:25:28.127 回答
1

perl

perl -pe 's/\n//g;s/XYZ\s+/\n$&/g' filename.txt
于 2012-10-25T14:23:23.403 回答
1

paste命令正是为了这个目的:

paste -d "" - -

如在

echo '$XYZ blah bl
ah blah
$XYZ somethi
ng
$XYZ random 
data' | paste -d "" - -

输出

$XYZ blah blah blah
$XYZ something
$XYZ random data
于 2012-10-25T16:43:02.747 回答