rubyのワンライナーを使ってみようとして勉強しています。
カンマ区切りを分割まではできたのですが、もう一つ処理を加えようとして、すんなりとできませんでした。
タブ区切りのファイル入力して、3列目にある文字列をカンマ区切りを取り除きました。カンマ区切りを分割した後、文字列を加工するにはこの方法しかないのでしょうか。
stripで前後の空白を取り除けないのでしょうか。
まずはstripをワンライナーで実行
~ $ ruby -e 'puts(" aa ".strip)' aa<== こうしたい
実際の入力ファイル
~ $ cat test.tsv col1 col2 col3 col4 1 a A, B,X x 2 b S ,T,U y 3 c V,W ,C z
3列目を入力して、カンマ区切りを改行に変更 当然“B”の前の空白は出力される
~ $ cat test.tsv |ruby -F'\t' -ane 'puts($F[2].gsub(/,/,"\n")) if $. != 1' A B X S T U V W C
このときにカンマ区切りの前後に空白があれば除去したいのですが、
stripでは取り除けませんでした
~ $ cat test.tsv |ruby -F'\t' -ane 'puts($F[2].gsub(/,/,"\n").strip) if $. != 1'
gsubであれば除去できました
~ $ cat test.tsv col1 col2 col3 col4 1 a A, B,X x 2 b S ,T,U y 3 c V,W ,C z 4 d F G, H I X ~ $ cat test.tsv |ruby -F'\t' -ane 'puts($F[2].gsub(/,/,"\n").gsub(/^ */,"").gsub(/ *$/,"")) if $. != 1' A B X S T U V W C F G H I
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/26 05:04 編集