アプリ版:「スタンプのみでお礼する」機能のリリースについて

誰かシェルスクリプトについて教えてください。

less list.txt
1 2 3 5
2 12 14 12
3 15 2 4
.
.
.
12000 340 345 1


のように1列目の数字が2,3,4列目の数字の並びに対して1対1で対応しています。
数字の間はすべてタブ区切りなのですが、

これをUbuntuのターミナルで
less list.txt | grep -E ^[0-9]*$'\t'12$'t'14$'\t'12 | cut -f1
と打てば、
>2
と返ってくるのですが、
これをシェルスクリプトに記載し
less test.sh
#!/bin/sh
less list.txt | grep -E ^[0-9]*$'\t'12$'t'14$'\t'12 | cut -f1

sh -x test.sh
とすると
test=$(grep -E ^[0-9]*$'\t'12$'t'14$'\t'12 | cut -f1)
echo $test
とすると
変数$testに何も入っておらず、何も返ってきません。

上記のシェルスクリプトでも
>2
と返すためにはどうしたらよいのでしょうか。

誰か教えていただけますと助かります!!
よろしくお願いいたします。

A 回答 (2件)

less list.txt | grep -E ^[0-9]*$'\t'12$'t'14$'\t'12 | cut -f1


これだとパイプでgrepにデータを与えているけど、

test=$(grep -E ^[0-9]*$'\t'12$'t'14$'\t'12 | cut -f1)
これはパイプを使っていないから、grepに引数を与える必要があるんじゃないですか。
    • good
    • 0

「上記のシェルスクリプトでも」って書いてあるけど, シェルスクリプトは全く使ってないでしょ?



しかし, なんで less なんだろう. あとエスケープを適切にした方がいいと思うなぁ.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!