LoginSignup
0
1

More than 3 years have passed since last update.

【awk】行が長い SQL の in 句などを数個単位でまとめて行を短くするスクリプト

Last updated at Posted at 2020-10-28

SQL の in 句を編集するときがたまにあります。

テキストエディタでシングルクオートを付与したり、置換などして加工しますが、こんなときこそさくっと加工したいところです。

また、 in 句が縦に長いとコピペなどにも苦労するので、数個単位でまとめてみました。
サンプルは4個単位でまとめています。

echo 'A001
A002
A003
A004
A005
A006
A007
A008
A009
A010
A011' \
| awk '
  BEGIN {
    SQ="\047"
  }

  count++ {
    printf ","
  }

  {
    printf SQ $0 SQ
  }

  !(count%4) {
    printf "\n"
  }
'

結果は以下のように表示されます。

'A001', 'A002', 'A003', 'A004'
, 'A005', 'A006', 'A007', 'A008'
, 'A009', 'A010', 'A011'

こちらでも良さそうです。

echo 'A001
A002
A003
A004
A005
A006
A007
A008
A009
A010
A011' \
| awk '
  BEGIN {
    SQ="\047"
  }

  count++ {
    print ","
  }

  {
    printf SQ $0 SQ
  }
' \
| paste - - - -

結果は以下のように表示されます。

'A001', 'A002', 'A003', 'A004',
'A005', 'A006', 'A007', 'A008',
'A009', 'A010', 'A011'
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1