次の内容を含むファイルがあります。
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」の間のすべての文字を削除します。その後、最後に「line」を追加します。
これはサンプルラインでのみテストされました。ファイルに他のバリエーションがある場合は機能しない可能性があります。
awk
「=」と「|」間のすべての値を取得する別の方法は次のとおりです。
awk '$0=$2' FS=\= RS='|' ORS="|" | head -1
head
期待される出力次の2行目の最後の "|"文字が印刷されたため、パイプを実行する必要がありました。