我有一个包含多行的文件。我正在尝试找到与某个模式匹配的行,然后将它们附加到输出文件中,所有这些都是相同的。
例: 输入文件:
ABCD
other text
EFGH
other text
IJKLM
我正在尝试将输出设为:
ABCD EFGH IJKLM
答案 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
它会将每隔一行打印成一行。