awk フィールドの値の切り捨て

awk フィールドの値の切り捨て

ファイルを解析し、awkを使用して最初と3番目のフィールドを取得しています。

これはすべて素晴らしいですが、最初のフィールドから文字列の最後の4文字を削除したいと思います。これまでawkでこれを行う方法が見つかりませんでした。唯一の方法は、何度も呼び出すことです。したがって、awk出力を2つの変数に保存してから、最初の文字列を切り捨てます。

より効率的な方法がありますか?ファイルの外観は次のとおりです。

abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

これが私がループで実行していることです。

echo $output | awk -F, "{print $1, $3}"

これにより、行が正しく印刷されますが、$ 1を切り取り、最後の4文字を削除したいと思います。

ベストアンサー1

1つの方法はawkの機能を使用することですsubstr。たとえば、次の入力から始めます。

$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

最初と3番目の列を印刷し、最初の列の最後の4文字を省略できます。

$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod

おすすめ記事