タグ付けされた質問 「text-processing」

プログラム、スクリプトなどによるテキストの操作または検査

8
文字が1回だけ含まれている場合に行を削除する方法
特定の文字を1回だけ含むファイルから行を削除したいのですが、その行が複数回存在する場合や存在しない場合は、その行をファイルに残してください。 例えば: DTHGTY FGTHDC HYTRHD HTCCYD JUTDYC ここで、私は削除したい文字があるCので、このコマンドは行を削除する必要がありますFGTHDCし、JUTDYC彼らが持っているので、C正確に一度だけ。 sedまたはを使用してこれを行うにはどうすればよいawkですか?

6
ファイルのエポックタイムスタンプを他の形式に置き換える方法は?
人間が読める形式に変換する必要があるエポック日付を含むファイルがあります。私はすでに日付変換を行う方法を知っています、例えば: [server01 ~]$ date -d@1472200700 Fri 26 Aug 09:38:20 BST 2016 ..しかしsed、ファイルをウォークスルーしてすべてのエントリを変換する方法を理解するのに苦労しています。ファイル形式は次のようになります。 #1472047795 ll /data/holding/email #1472047906 cat /etc/rsyslog.conf #1472048038 ll /data/holding/web

9
行を列に変換する
ハイパーバイザーで実行されているVMに関する詳細を含むファイルがあります。コマンドを実行して、出力をファイルにリダイレクトします。そして、以下のフォーマットで利用可能なデータです。 Virtual Machine : OL6U5 ID : 0004fb00000600003da8ce6948c441bb Status : Running Memory : 65536 Uptime : 17835 Minutes Server : MyOVS1.vmorld.com Pool : HA-POOL HA Mode: false VCPU : 16 Type : Xen PVM OS : Oracle Linux 6 Virtual Machine : OL6U6 ID : 0004fb00000600003da8ce6948c441bc Status : Running Memory …

6
bash-ファイルの各行をペアにします
この質問は、これとこの質問に強く関連しています。複数の行を含むファイルがあり、各行はファイルへのパスです。次に、各行を(それ自体ではなく)それぞれ異なる行とペアにします。また、私の目的でA Bはペアはペアと等しいB Aので、これらの組み合わせの1つだけを作成する必要があります。 例 files.dat 短縮表記でこのように読みます。各文字はファイルパスです(絶対または相対) a b c d e 次に、私の結果は次のようになります。 a b a c a d a e b c b d b e c d c e d e できればbashでこれを解決したいと思います。他の質問とは異なり、私のファイルリストはかなり小さい(約200行)ため、ループとRAM容量を使用しても問題はありません。

4
タブ「\ t」が行にある長さを決定します
テキスト処理フィールドで、タブの長さが8文字(デフォルトの長さ)以下かどうかを知る方法はありますか? たとえば、タブ区切りのサンプルファイルがあり、フィールドの内容が1つ未満のタブに収まる場合(≤7)、その後にタブがある場合、そのタブは「タブサイズ-フィールドサイズ」のみになります。 ' 長さで。 行のタブの全長を取得する方法はありますか?私はタブの数(つまり、10個のタブが10を返すべきではない)を探しているのではなく、それらのタブの文字長を探しています。 以下の入力データの場合(フィールド間で区切られたタブと1つのタブのみ): field0 field00 field000 last-field fld1 fld11 fld001 last-fld fd2 fld3 last-fld 各行のタブの長さを数えるので、 11 9 9

2
vi / vimでは、ファイルを上書きするのではなく、ファイルに追加するにはどうすればよいですか?
簡単にファイルに書き込むことができます:w <file>。ファイルを上書きする代わりに、ファイルに追加して書き込む方法を教えてください。 使用例:ログファイルからいくつかのサンプルを別のファイルに取り込みたい。今日それを達成するために私はできる: ログファイルを開く いくつかの行を選択してください Shift+v ファイルに書き込む: :w /tmp/samples いくつかの行を選択してください Shift+v 追加する/tmp/samplesと:w !cat - >> /foo/samples 残念ながら、手順5は長く、見苦しく、エラーが発生しやすくなります(a >がないと、データが失われます)。ここにVimがもっと良いものを持っているといいのですが

3
複数行のテキストファイルで、中かっこの間のすべてのテキストを削除するにはどうすればよいですか?
例: This is { the multiline text file } that wants { to be changed } anyway. になるはずです: This is that wants anyway. フォーラムでいくつかの同様の スレッドを見つけましたが、それらは複数行の中括弧で動作しないようです。 可能であれば、grep、sed、awkなどに基づくソリューションなど、1行の方法を使用することをお勧めします。 編集:ソリューションは問題ないようですが、元のファイルに中括弧のネストが含まれていることに気づきました。だから私は新しい質問を開いています。皆さん、ありがとうございます。複数行のテキストファイルで、ネストされた中かっこの間のすべてのテキストを削除するにはどうすればよいですか?

4
改行文字を含む文字列を置き換えます
bashシェル、以下のもののような行を持つファイルに first "line" <second>line and so on の1つ以上の出現をに置き換え"line"\n<second>てother characters、毎回取得したいと思います。 first other characters line and so on 両方などの特殊文字で文字列を置換する必要があり、私はそう"と<して改行文字と。 他の回答の間で検索したところsed、コマンドの右側(other characters文字列)の改行は受け入れられるが、左側は受け入れられないことがわかりました。 またはでこの結果を取得する方法(これよりも簡単)はありますか?sedgrep

6
psコマンドからキーと値のペアを抽出する方法
私はpsこのようなコマンドからアプリケーション名を抽出しようとしています: ps -af -u sas |grep "java"| grep -v "grep" そしてそれは以下を生成します: sas 24431 1 0 Oct10 ? 00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs 私は使用しようとしましたegrepが、動作していないようです: ps -af -u sas|grep "java"| grep -v "grep"| egrep -o "-Dapp.name" -Dapp.name値「myApp」のみを取得するにはどうすればよいですか?

4
2つ以上のファイルの行をインターリーブする方法は?
2つのファイルを1つのファイルに出力しようとしました。私は以下のコマンドを試しました: cat file1 file2 しかし、ここではfile2データがに追加されていfile1ます。 私が必要なのは、file11行目file2と1行file1目、2行目と2行file2目などです。 簡単な方法でこれを行う方法を誰かに教えてもらえますか?

4
二重引用符内にあるコンマのみを削除します
テキストファイルで、,(カンマ)と"(引用符)も削除したい(二重引用符にカンマで区切られた数値が含まれている場合のみ)。 56,72,"12,34,54",x,y,"foo,a,b,bar" 期待される出力 56,72,123454,x,y,"foo,a,b,bar" 注:上記の行は例として示しています。私のテキストファイルには上記のような多くの行が含まれており、二重引用符で囲まれたカンマで区切られた数字は異なるはずです。あれは、 56,72,"12,34,54",x,y,"foo,a,b,bar" 56,92,"12,34",x,y,"foo,a,b,bar" 56,72,"12,34,54,78,76,54,67",x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar","12,34,54" 56,72,x,y,"foo,a,b,bar","12,34,54","45,57,84,92","bar,foo" 予想される出力: 56,72,123454,x,y,"foo,a,b,bar" 56,92,1234,x,y,"foo,a,b,bar" 56,72,12345478765467,x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar",123454 56,72,x,y,"foo,a,b,bar",123454,45578492,"bar,foo" nコンマで区切られた二重引用符内にいくつかの数字があります。また、文字を含む二重引用符はそのままにします。 sedテキスト処理ツールが大好きです。sedこの解決策を投稿していただければ幸いです。

4
ファイルを分割して、対応するデータ構造に入れますか?
以下の1行を含むファイルがあります。 {machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]} ここには2つのデータセットがあります。 machineA=[0, 1024, 4, 1028] machineB=[1, 1025, 5, 1029] ここで、上記のファイルを読み取り、上記のように各マシンの情報を抽出していくつかのデータ構造に格納できるように分割する必要があります。 現在、bashシェルスクリプトでどのデータ構造を使用すればよいか混乱しています。これをJavaで実行している場合は使用しますMap<String, Set<String>>が、シェルスクリプトで何を使用すればよいかわかりません。 そして、それを何らかのデータ構造に格納した後、それを反復して結果を出力する必要があります。 以下のシェルスクリプトを使用して上記のファイルを読み取ることができます。 #!/bin/bash while read -r line; do echo "$line" done < data.txt しかし、私は上記のラインデータをどのように分割して、各マシン情報を抽出し、それをいくつかのデータ構造に格納できるかわかりませんか? 更新:- 以下は、glennの提案に従って作成したシェルスクリプトです。 #!/bin/bash while read -r line; do echo "$line" declare -A "$( echo "x=(" …

5
コマンドの引数としてbashで区切られたテキストファイルを解析する
テキストファイルを次のように分割しています。 field1,field2,field3 xield1,xield2,xield3 dield1,dield2,dield3 gield1,gield2,gield3 これらの各列はプログラムのパラメーターになります。プログラムは各行で呼び出されます 私はループのようなものを望んでいました: for $i in file command $field2 -x $field3 -PN -$field1 >> output done このようなことをbashで達成するための最良の方法は何でしょうか?

3
テキストファイルを読み取り用に短い行に分割しますか?
長い行を含むプレーンテキストファイルを取得し、特定の数の文字の後に改行を追加して、単語で分割するだけで読みやすくするプログラムはありますか?たとえば、次のようにします。 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel lectus ac enim venenatis porttitor in et est. Curabitur ut eros quis risus consequat dictum a a lectus. Integer ut risus quis augue lobortis molestie vel id nibh. Aliquam sit amet mattis lorem, vel ornare felis. Donec pulvinar tempus …

3
2つの特定の文字列間のテキストを削除する
次のようなファイルがあります。 mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826 scr PI Name: RRC Access Failures due to UU, Value: 0.13394141 prog PI Name: RRC Access Failures due to UU, Value: 0.16077702 sch PI Name: RRC Access Failures due to UU, Value: 0.11781933 PIまでテキストを削除したいValue:。私は試した sed '/<PI>/,/<\/Value:>/d' 何か助けは?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.