私はこの出力を持っています:
1024x768 75.0 70.1 60.0
印刷のみに設定するにはどうすればよいですか
1024x768
?
ところで、誰でも Sed のドキュメントを提供できますか? これの使い方を学ぶ必要があります。
私はこの出力を持っています:
1024x768 75.0 70.1 60.0
印刷のみに設定するにはどうすればよいですか
1024x768
?
ところで、誰でも Sed のドキュメントを提供できますか? これの使い方を学ぶ必要があります。
POSIX 文字クラスを使用して、空白の後のすべてを sed で取り除きます。例えば:
$ echo '1024x768 75.0 70.1 60.0' | sed 's/[[:space:]]\+.*//'
1024x768
sed を使用することもできますが、ネイティブのフィールド分割により、問題は awk で解決する方がはるかに優れています。例えば:
$ echo '1024x768 75.0 70.1 60.0' | awk '{print $1}'
1024x768
テキストから文字列を抽出する必要がある場合grep
は、最初に表示されます。
grep -o '^[^ ]*'
あなたのデータで:
kent$ echo "1024x768 75.0 70.1 60.0"|grep -o '^[^ ]*'
1024x768
これはあなたのために働くかもしれません(GNU sed):
sed -r 's/\s*([0-9]+)?\.[0-9]+\s*//g;/./!d' file
これにより、10進数と周囲の空白が削除されます。行に何も残っていない場合は、空の行も削除されます。
豊富なsed素材については、こちらをご覧ください。
あなたはあなたの行を処理することができます
sed 's/\s.*$//'
「最初の空白の後のすべてを検索し、何も置き換えない」
コメントで指摘されたように、\s
省略形は のすべてのバージョンで機能するわけではなくsed
、$ 記号は不要です。sed 's/[\t ].*//
より一般的に適用できるように使用できます。「最初のタブまたはスペースの後のすべてを見つけて削除します」。
もちろん、削除したい文字列の「一般的なケース」について少し推測しています...あなたの質問は、ドットが含まれるすべての数字を削除したいことを暗示しているようでした。これは、次のように別の表現になります。
sed 's/[0-9]+\.[0-9]+//g'
「0 から 9 までの数字の任意の組み合わせで始まり、その後にドットが続き、その後に少なくとも 1 桁の別のグループが続くテストのブロックを何も置き換えない」
適切な sed のドキュメントについては、http: //www.grymoire.com/Unix/Sed.html を参照してください。
awk
ただし、この場合はおそらくより優れたツールです(codegnomeの回答を参照)