タグ付けされた質問 「string」

文字列操作:文字列の一部の抽出、テキストの置換、特定の幅へのフォーマットなど

3
文字列のn番目の文字の大文字と小文字を変更する
私は、文字列中のn番目の文字の大文字と小文字を変更するBASH(例えば、または任意の他の* nixのツールsed、awk、tr、など)。 文字列全体の大文字と小文字を次のように変更できることを知っています。 ${str,,} # to lowercase ${str^^} # to uppercase 「テスト」の3文字目の大文字を大文字に変更できますか? $ export str="Test" $ echo ${str^^:3} TeSt


3
文字列内の特定の文字を削除する方法はLinuxでその行に数字がない場合のみ
私はこの一見修正が簡単な問題に困惑してきました...まあ、しばらくの間。 編集する必要があるファイルからの出力例を次に示します。 $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR 「George Washington」と「Geneva Convention」の間のスペースを削除する必要がありますが、「123,281,029 USD」または「342,019,929 EUR」の間のスペースは削除しないでください。 基本的に、ここでの目標は、行に数字がない場合にのみ、行の単語間のスペースを削除することです。 私はを介してファイルを編集しようとしましたgrep -v [0-9] $file | sed 's/ //'が、それが機能する唯一の方法は、別のファイルに出力する場合ですが、それは古いファイルから新しいファイルへの番号のあるすべての行を除外することを意味します。 私はgrepを使ってかなりばかげたループをいくつか試しましたsedが、何も正しく動作しないようです。 ここでも、ファイルの出力例を示します。 $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR これが私の望ましい出力です: $cat file GeorgeWashington GenevaConvention 123,281,029 USD 342,019,929 EUR
8 centos  sed  string  replace 

7
`sed`を使用して正確な文字列を一致させる方法は?しかし、その一部ではありません。
以下のような入力ファイルFILE1.TXTがあります。 11 id1 12 13 AGE = 20 14 NAME = NAME1 15 16 id2 17 18 AGE = 30 19 NAME = NAME2 . . . 110 idXYZ 111 112 AGE = AGEXYZ 113 NAME = NAMEXYZ 114 115 idZZZ 116 特定のIDに属するすべてのフィールドを検索して、NAMEの値を取得したい 各IDをループ処理して、必要に応じて各IDに対して以下のコマンドを作成しました。 sed -n '/11/,/14/p' FILE1.TXT | grep …
8 sed  string  patterns 

3
forループを使用して新しい行を見つける方法は?
私が見つけたウェブ上のさまざまな場所で: \015 \012 \x0a - hex \n \r さまざまな改行/改行の同義語としてすべて... しかし、この小さなスクリプトでは、改行に遭遇したときに認識できません。誰かがif行でチェックする必要があることを誰かに教えてもらえますか? #!/bin/bash test="this is a test" for a in "$test"; do if [[ "$a" == '\012' ]] ; then echo "FOUND NEWLINE" fi echo "$a" done
8 bash  shell  string 

3
バッシュ文字列は複数の文字を1つに置き換えます
フィードのタイトルから、文字と数字を除くすべての文字をダッシュ​​に置き換えて、ファイルシステムの安全なファイル名として結果を使用します。 $ t="Episodie 06: No hope of riding home (NEW) - Advanced grammar" $ echo ${t//[^A-Za-z0-9]/-} Episodie-06--No-hope-of-riding-home--NEW----Advanced-grammar しかし、私はすべての繰り返しダッシュを次のように1つに凝縮したいと思います Episodie-06-No-hope-of-riding-home-NEW-Advanced-grammar 私は2パスの置換を使用してそれを達成できることを発見しました: $ t="Episodie 06: No hope of riding home (NEW) - Advanced grammar" $ tmp=${t//[^A-Za-z0-9]/-} $ echo ${tmp//--/-} Episodie-06-No-hope-of-riding-home-NEW--Advanced-grammar 私は次のような単一のパスでそれを行うことができると思いました: $ echo ${t//[^A-Za-z0-9]+/-} しかし、それは機能しません。 どんな手掛かり? 注:sed他のツールと一緒に行きたくない
8 bash  shell  string 

2
テキストと数字を含む文字列を改行に書き換え、テキストを挿入する
要するに、1行の出力文字列を複数の行に分割し、各rawにホスト名のラベルを付けます。 ホスト名ProcessName CPUCore output = $(ssh -q -o "StrictHostKeyChecking yes" $ ssh_host 'ps -eo comm、lastcpu | grep rrcp') 次のようなreturn out putにループを挿入する方法。 rrcpd 17 rrcpd 0 そして、 Hostname1 rrcpd 17 Hostname1 rrcpd 0 注意 数字は0〜32 ホスト名は変数文字列$ myhostです テキストは変更されます。つまり、厳密にはrrcpdではなく、たとえば rrcpd 17 rrcpd 0 チーズ3ケーキ8 猫9犬3 各ホストで実行されるコマンド output = $(ssh -q -o "StrictHostKeyChecking …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.