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

Perlは、高水準で汎用のインタプリタ型動的プログラミング言語です。それはもともと、レポート処理を容易にするための汎用Unixスクリプト言語としてLarry Wallによって開発され、オープンソースコミュニティのサポートを得て、グラフィックプログラミング、システム管理、ネットワークプログラミング、ファイナンスに使用できるように進化および成熟しました。 、バイオインフォマティクス、およびその他のエンジニアリングアプリケーション。

7
間違った場所で壊れた行を修正するにはどうすればよいですか?
私のテキストファイルは次のようになります。 This is one sentence that is broken. However this is a good one. And this one is somehow, broken into many. 小文字で始まる行が続く行の末尾の改行文字を削除したい。 したがって、これは次のようになります。 This is one sentence that is broken. However this is a good one. And this one is somehow, broken into many. これどうやってするの? 編集:ここには本当に良い答えがいくつかありますが、私は最初に機能し、最も早いものを受け入れることにしました。どうもありがとうございました!

3
Regex&Sed / Perl:ISNの前に別の単語がない単語に一致
前に特定の単語がない単語をすべて使用sedまたはperl置換したい。 たとえば、映画のプロットが含まれているテキストファイルがあり、出現するすべてのキャラクターの姓を名に置き換えたいのは、姓が姓の直前にない場合のみです。 サンプルテキストは次のようになります。 John Smith and Jane Johnson talk about Smith's car. 私はそれをこのように見せたいです: John Smith and Jane Johnson talk about John's car. 私がちょうどするならsed 's/Smith/John/' file、私は持っているでしょう: John John and Jane Johnson talk about John's car. 姓の前にある名は常に同じになります。私はに対処する必要はありませんJohn SmithとFrank Smith。私SmithはJohnそれに先行していないマッチする方法が必要です。

1
入力を使用してNohupコマンドを実行する
UNIXでは、nohupを使用して実行したいプロセスがあります。ただし、このプロセスは、ある時点で、入力するyes必要があるプロンプトで、またはno続行するために待機します。これまでのところ、UNIXでは次のことを行っています。 nohup myprocess <<EOF y EOF そのため、nohupを使用してプロセス 'myprocess'を開始し、 'y'を使用してファイルをパイプし、ファイルを閉じます。上記の行は、実質的に3つの別々のコマンドです。つまり、UNIXの最初の行でEnterキーを押してから、「y」と入力してEnterキーを押し、最後に「EOF」と入力してReturnキーをもう一度押します。だからこれは完璧に動作しますが、私の問題は以下です。 これをPerlで実行したいのですが、3行以上あるため、このコマンドを実行する方法がわかりません。以下が機能するかどうかはわかりません: my $startprocess = `nohup myprocess <<EOF & y EOF `
11 process  perl  nohup 


3
パイプラインでの複数のtrプロセスを回避するために、trコマンドをチェーン化できますか?
私はたくさんのtxtファイルを持っています。それらを小文字で、アルファベットと1行につき1ワードだけ出力したいのですが、次のようなtrパイプラインでいくつかのコマンドを使用して実行できます。 tr -d '[:punct:]' <doyle_sherlock_holmes.txt | tr '[:upper:]' '[:lower:]' | tr ' ' '\n' これを1回のスキャンで実行することは可能ですか?私はこれを行うには、Cプログラムを書くことができますが、私は感じて使用してそれを行う方法がありますようにtr、sed、awkまたはperl。
11 sed  awk  perl  tr 


2
perlとsedの印刷できない文字を置き換える
ファイル内の一部の印刷できない文字をスペースで置き換える必要があります。 具体的には、(TAB)、(改行)、(CR)を除く、から0x00までのすべての文字0x1F0x090x0A0x0D 今までは0x00キャラクターを入れ替えるだけでした。私の以前のOSはAIX(GNUコマンドなし)だったので、使用できませんsed(まあ、使用できますが、いくつかの制限がありました)。だから、私はを使用して次のコマンドを見つけましたperl、それは期待通りに機能しました: perl -p -e 's/\x0/ /g' $FILE_IN > $FILE_OUT 現在はLinuxを使用しているので、sedコマンドを使用できると期待していました。 私の質問: このコマンドはそれらの文字を置き換えるのに適切ですか?私が試しました、そしてそれはうまくいくようですが、私は確かめたいです: perl -p -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT perl -pとして動作すると思ったsed。それでは、なぜ前のコマンドは機能し(少なくとも失敗しません)、次のコマンドは機能しませんか? sed -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT それは私に伝えます: sed:-e expression#1、char 34:無効な照合文字
11 sed  perl 

2
BashにPerl RegExエンジンの使用を強制する
すでにご存じかもしれませんが、最新のRegExエンジンがサポートする機能の多く(後方参照、ルックアラウンドアサーションなど)は、Bash RegExエンジンではサポートされていません。以下は、私の最終目標が何であるかを説明するために作成した単純なBashスクリプトです。 #!/bin/bash # Make sure exactly two arguments are passed. if [ $# -lt 2 ] then echo "Usage: match [string] [pattern]" return fi variable=${1} pattern=${2} if [[ ${variable} =~ ${pattern} ]] then echo "true" else echo "false" fi したがって、たとえば、次のようなコマンドはfalseを返します。 . match.sh "catfish" "(?=catfish)fish" 一方、PerlまたはJavaScriptの正規表現テスターで使用すると、まったく同じ式で一致が検出されます。 後方参照(例(expr1)(expr2)[] \ 1 \ …

5
awk / sed / perl one liner + jsonファイルからプロパティ行のみを印刷する方法
jsonファイルからプロパティ行のみを印刷する方法 jsonファイルの例 { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "items" : [ { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "tag" : "version1527250007610", "type" : "kafka-env", "version" : 8, "Config" : { "cluster_name" : "HDP", "stack_id" : "HDP-2.6" }, "properties" : { "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}\nexport …
10 awk  sed  perl  json  jq 

2
ファイルのインプレース変更はどのように行われますか?
ファイルの「インプレース」変更とは、たとえば、sed -iまたはそれをperl -i意味しますか? 私の質問は、このインプレース修正がどのように行われるかについてです。ファイルはコピーされますか?変更はコピーで行われ、元のファイルを置き換えますか?または、元のファイルが何らかの方法で変更されていますか?
10 files  sed  perl 

6
Perlを使用してファイル内の科学的数を数える
ファイル内の科学的数値の数を数えるにはどうすればよいですか?ファイルには、スキップする必要がある数行のヘッダーもあります。 ファイルの内容の一部を以下に示します。 FileHeaderLine1 FileHeaderLine2 FileHeaderLine3 FileHeaderLine4 2.91999996E-001 2.97030300E-001 3.02060604E-001 3.07090908E-001 3.12121212E-001 3.17151517E-001 3.22181821E-001 3.27212125E-001 3.32242429E-001 3.37272733E-001 3.42303038E-001 3.47333342E-001 3.52363646E-001 3.57393950E-001 3.62424254E-001 3.67454559E-001 3.72484863E-001 3.77515137E-001 3.82545441E-001 3.87575746E-001 3.92606050E-001 3.97636354E-001 4.02666658E-001 4.07696962E-001 4.12727267E-001 4.17757571E-001 4.22787875E-001 4.27818179E-001 4.32848483E-001 4.37878788E-001 4.42909092E-001 4.47939396E-001 4.52969700E-001 では、上記の例の最初の4行をスキップして、ファイル内の科学的数値の数を数えるにはどうすればよいでしょうか。
10 perl 

2
ユーザープログラムにハングアップしていないことを示すリソースにやさしい方法
* nixシステムにPerlスクリプトがあり、ある時点で50,000行以上のテキストを処理しています。これには時間がかかります。このテキストをすべて処理している間、プログラムがハングしていないことをユーザーに知らせるためのリソースにやさしい方法を見つけようとしています。 現在、テキストの処理中に出力をリアルタイムで印刷しています。出力バッファをフラッシュしてから、で出力を1行に出力してい\rます。これは、何も印刷しない場合と比べてほぼ2倍の時間がかかるため、不必要なリソースの使用のようですが、前述したように、何も印刷しない場合、プログラムがハングしているように見えます。 だから私の質問:実行時間の長いタスクを実行しているときにプログラムが実際に実行されていることをユーザーに知らせるための標準的または簡単な方法はありますか?
10 perl  output 


6
grepの-A -B -Cスイッチ(前後に数行を出力する)に代わるものはありますか?
grep -A 2 -B 3 grep文字列の後に2行印刷し、その前に3行印刷します。 grep -C 3 前に3行と後の3行を印刷します 残念ながら、grep私が使用しているものはこれらのオプションをサポートしていません。これをシミュレートするために使用できる代替コマンドまたはスクリプトはありますか?sed/ awk/ perl/ shellスクリプトを使用していますか?

6
ファイル内のパターンのN番目の出現のみを置き換える方法は?
sedコマンドを使用してファイル内の3番目の文字列を置き換える方法。 例: 唯一の第三の発生を変更isするusファイルに。 私の入力ファイルには以下が含まれます: hai this is linux. hai this is unix. hai this is mac. hai this is unchanged. 私は出力が期待されています: hai this is linux. hai thus is unix. hai this is mac. hai this is unchanged.

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