[解決済み] Unix コマンドラインでの簡潔で移植性の高い「join」。
2023-06-19 15:21:12
質問
複数の行を一行に結合し、改行文字があった場所に区切り文字を置き、末尾の区切り文字を避け、オプションで空行を無視するにはどうしたらよいでしょうか。
例 テキストファイルを考えてみましょう。
foo.txt
という、3行のテキストファイルがあるとします。
foo
bar
baz
希望する出力は
foo,bar,baz
今使っているコマンド。
tr '\n' ',' <foo.txt |sed 's/,$//g'
理想的にはこのような感じです。
cat foo.txt |join ,
何が。
- 最も移植性が高く、簡潔で読みやすい方法です。
- 非標準の unix ツールを使用した、最も簡潔な方法です。
もちろん、私は何かを書いたり、エイリアスを使ったりすることができます。しかし、私は選択肢を知ることに興味があります。
どのように解決するのですか?
ちょっと意外かもしれません。
paste
はこれを行う良い方法です。
paste -s -d","
この方法では、あなたが言ったような空行は扱えません。その場合は、テキストをパイプで
grep
に、まず通します。
grep -v '^$' | paste -s -d"," -
関連
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] シェルコマンドの実行と出力のキャプチャ
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
-
[解決済み] 整数の合計を1行に1つずつ表示するシェルコマンド?
-
[解決済み] コマンドラインからの 'git commit -m' に改行を追加する
-
[解決済み] Unixシェルスクリプトは、スクリプトファイルが存在するディレクトリを見つけることができますか?
-
[解決済み] Unixのシェルスクリプトで環境変数が設定されていることを確認する簡潔な方法は何ですか?
-
[解決済み] time "コマンドの出力をリダイレクトするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 複数行のファイル名をカスタムデリミターで1つに結合する方法は?
-
[解決済み] .bashrc、.bash_profile、.environmentの違いは何ですか?
-
[解決済み] シェルからErlangのリリースバージョン番号を取得する方法は?
-
[解決済み] 魚貝類でPATHを変更する【終了しました
-
[解決済み] 複数行の文字列をカンマで区切られた1つの文字列に変換する
-
[解決済み] シェルパイプでエラーコードをキャッチする
-
[解決済み] 環境変数を設定するシェルスクリプト
-
[解決済み] time "コマンドの出力をリダイレクトするには?
-
[解決済み] awk を使って特定の数字以降のすべての列を表示するには?
-
[解決済み] 複数行をカンマ区切りで1行にする【重複