バックスラッシュでソースコードの途中で改行
awkで、例えば、if文を書いているときに、
条件式が多数に及び、ソースコードの途中で改行をしたい場合があると思います。
そんなときは、バックスラッシュを使うことで改行することができます。
例えば、下記のように、if文があったときに、条件式を改行を入れてコンパクトにする場合です。
if($1 == 2019 || $1 == 2018 || $2 == 3){
print $0
}
下記のように、バックスラッシュで区切ることで改行できます。
if($1 == 2019 || \
$1 == 2018 || \
$2 == 3){
print $0
}
サンプルコード
例えば、下記のin.txtがあったとします。
$ cat in.txt 2018,1 2019,2 2020,3 2021,4 2022,5 2023,6
下記がサンプルコードになります。
$ cat sample.awk
#!/bin/sh
EOL=$(cat in.txt | wc -l)
cat in.txt | awk -v "EOL=$EOL" '
BEGIN{
FS = ","
}
{
if($1 == 2019 || \
$1 == 2018 || \
$2 == 3){
print $0
}
}
'
下記が実行結果になります。
$ ./sample.awk 2018,1 2019,2 2020,3
