使用grep附加到同一行

时间:2014-03-08 21:02:06

标签: unix grep

我有一个包含多行的文件。我正在尝试找到与某个模式匹配的行,然后将它们附加到输出文件中,所有这些都是相同的。

例: 输入文件:

ABCD 
other text
EFGH
other text
IJKLM

我正在尝试将输出设为:

ABCD EFGH IJKLM

4 个答案:

答案 0 :(得分:1)

使grep输出匹配由空格而不是换行符分隔的简单方法是将其包装在$(...)的子shell中,如下所示:

echo $(grep -o '^[A-Z]*$' input.txt) >> output.txt

或者您可以使用tr

grep -o '^[A-Z]*$' input.txt | tr '\n' ' ' >> output.txt

perl

grep -o '^[A-Z]*$' input.txt | perl -pe 'chomp; s/$/ /'

答案 1 :(得分:0)

您可以使用tr将换行符转换为空格:

grep $EXPRESSION $INPUT_FILE | tr '\n' ' ' >> $OUTPUT_FILE

答案 2 :(得分:0)

如果你喜欢perl,你也可以

perl -nl40e 'print if /PATTERN/' files....

perl -nl40e 'print if /[A-Z]/' file

为您的输入产生

  

ABCD EFGH IJKLM

答案 3 :(得分:0)

这是一个简短的awk

awk 'NR%2==1' ORS=" " file
ABCD EFGH IJKLM

它会将每隔一行打印成一行。