以下の文字列がhoge.txtに保存されていて、そこから以下の文字を抜き出したいです。
:の後の文字列を全部抽出したいので、sedコマンドを使うことはわかりましたが、正規表現がどうしても理解できませんでした。
$$aaaaa:1234
↓
1234
回答3件
あなたの回答
tips
プレビュー
sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。
コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。
正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。
sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。
コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。
正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。
0グッド
0クリップ
投稿2021/01/11 03:55
以下の文字列がhoge.txtに保存されていて、そこから以下の文字を抜き出したいです。
:の後の文字列を全部抽出したいので、sedコマンドを使うことはわかりましたが、正規表現がどうしても理解できませんでした。
$$aaaaa:1234
↓
1234
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
もし、hoge.txtの中に:を含まない行があって、その行を除いて、:の後を表示したいなら、
awkになりますが、以下のようにしてください。
cat hoge.txt | awk '{ if (match($0,/^.:(.)$/,a) != 0) print a[1]; }'
hoge.txtの内容
$$aaaaa:1234
$$bbbbb
abk cd:1234678
abcd:987654321
コマンドの実行結果
1234
1234678
987654321
投稿2021/01/11 05:46
総合スコア5493
0
ベストアンサー
:の後の文字列を全部抽出したいので、
問題のとらえ方を変えると、先の質問で回答いただいたものと同じ考え方で実現できます。
テキストファイル内のある文字以前の文字列を削除するコマンドを教えてください。- teratail#314141
sh
1$ echo '$$aaaaa:1234' | sed -e 's/^[^:]*://' 21234 3 4$ echo '$$aaaaa01234' | sed -e 's/^[^:]*://' 5$$aaaaa01234
s/^[^:]*://
はつまり、「行頭から:
ではない文字が0個以上続き、:
で終わる部分を削除」と言う意味になります。「そんな解決法もありますよ」との一例の回答です。
投稿2021/01/11 05:01
編集2021/01/11 05:04総合スコア9254
0
以下のようなファイルだったとして、
cat hoge.txt $$aaaaaa:1234 eweqq:423423 ddddd:3343242 sdsfsd:3434234 $$$$$:33434 :::::4343
これでどうでしょうか。
cat hoge.txt | sed -r "s/.+:(.+)$/\1/" 1234 423423 3343242 3434234 33434 4343
分解すると
.+ # 任意の文字を1回以上 : # セミコロン (.+) # 任意の文字を1回以上(丸カッコでキャプチャ) $ # 行末
これをキャプチャした内容の「\1」に置換しています。
投稿2021/01/11 04:35
総合スコア831
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。