Unix 使用grep追加到同一行
我有一个多行的文件。我试图找到与特定模式匹配的行,然后将它们附加到输出文件中,所有这些行都位于同一个位置 例: 输入文件:Unix 使用grep追加到同一行,unix,grep,Unix,Grep,我有一个多行的文件。我试图找到与特定模式匹配的行,然后将它们附加到输出文件中,所有这些行都位于同一个位置 例: 输入文件: ABCD other text EFGH other text IJKLM 我正在尝试将输出设置为: ABCD EFGH IJKLM 您可以使用tr将换行符转换为空格: grep $EXPRESSION $INPUT_FILE | tr '\n' ' ' >> $OUTPUT_FILE 如果您喜欢perl,还可以 perl -nl40e 'print i
ABCD
other text
EFGH
other text
IJKLM
我正在尝试将输出设置为:
ABCD EFGH IJKLM
您可以使用
tr
将换行符转换为空格:
grep $EXPRESSION $INPUT_FILE | tr '\n' ' ' >> $OUTPUT_FILE
如果您喜欢perl,还可以
perl -nl40e 'print if /PATTERN/' files....
像
为您的输入生成
ABCD-EFGH-IJKLM
要使
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/$/ /'
下面是一个简短的
awk
awk 'NR%2==1' ORS=" " file
ABCD EFGH IJKLM
它将每隔一行打印一行。谢谢!这看起来是我得到想要的东西的最简单的方法。
awk 'NR%2==1' ORS=" " file
ABCD EFGH IJKLM