我有一个文件,其内容如下:
abc=123|qwer=432|reiw=2344|xyz=123 445|tyu=23 rows
我尝试过使用tr
,sed
但我需要使用awk
所需的输出应如下所示:
file2:
123|432|2344|123 445|23 rows
答案1
perl -F'=|\|' -pe '$_ = join "|", grep { $k++ % 2 } @F'
sed -e 's/[^=|]*=//g'
答案2
刚刚尝试过这个sed
:
sed 's/[a-z,=]//g' | sed 's/$/rows/'
也就是说,删除“a”和“z”之间的任何字符以及“=”。之后,在末尾添加“行”。
这只用您的示例行进行了测试,如果您的文件中存在其他变体,那么它可能无法工作。
另一种awk
获取“=”和“|”之间所有值的方法:
awk '$0=$2' FS=\= RS='|' ORS="|" | head -1
我不得不管道,head
因为它打印了最后一个“|”预期输出之后的第二行中的字符。