🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

2回答

1295閲覧

bashで標準入力をシングルクォーテーションで囲みハイフンをつけるいい方法が知りたいです。

DrqYuto

総合スコア432

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2019/09/25 12:42

bashで標準入力をシングルクォーテーションで囲みハイフンをつけるいい方法が知りたいです。catとawkで書きましたが、このままですと長いのでより短い方法があれば教えて下さい。

cat| awk '{for(i=1;i<=NF;i++)printf("'\''"$i"'\'' ,")}END{printf("\n")}'

参考

  • sed/awkで各文字列をシングルクォーテーション・ダブルクォーテーションで囲む | 俺的備忘録 〜なんかいろいろ〜

https://orebibou.com/2017/03/sedawk%E3%81%A7%E5%90%84%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%80%E3%83%96/

"awkの場合

awkの場合だとこんな感じ。

1

2
awk '{for(i=1;i<=NF;i++)printf("""$i"" ")}END{printf("\n")}' # ダブルクォーテーションの場合
awk '{for(i=1;i<=NF;i++)printf("'''"$i"''' ")}END{printf("\n")}' # シングルクォーテーションの場合
blacknon@BS-PUB-UBUNTU-01:$ echo abc def ghi | awk '{for(i=1;i<=NF;i++)printf("""$i"" ")}END{printf("\n")}'
"abc" "def" "ghi"
blacknon@BS-PUB-UBUNTU-01:
$ echo abc def ghi | awk '{for(i=1;i<=NF;i++)printf("'''"$i"''' ")}END{printf("\n")}'
'abc' 'def' 'ghi'"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2019/09/25 14:32

ハイフンはつけてないようにみえますが? ちなみに、やるとしたらデリミタを空白からハイフンにする感じスかね?
DrqYuto

2019/09/25 20:36

カンマをハイフンと間違えました…デリミタを調べてみます!
guest

回答2

0

ハイフンじゃなくてカンマですよね?awk版と空白の扱いが異なりますが、簡単には、

sh

1sed "s/[^ ][^ ]*/'&' ,/g"

空白の扱いを同じにすると、末尾のカンマが欠けますが、

sh

1sed "s/^ */'/;s/ *$/'/;s/ */' ,'/g"

投稿2019/09/25 14:24

otn

総合スコア85888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/09/25 20:34

呼び方を間違えました…ハイフンではなくカンマです!
guest

0

ベストアンサー

awkならそんなものでしょう。

awk以外を使っていいなら:

sed "s/([^ ][^ ]*)/'\1'/g"

または

perl -pe "s/(\S+)/'$1'/g"

投稿2019/09/25 13:15

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/09/25 20:35

Perlも良いですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問