0

私はこの出力を持っています:

1024x768       75.0     70.1     60.0

印刷のみに設定するにはどうすればよいですか

1024x768

?

ところで、誰でも Sed のドキュメントを提供できますか? これの使い方を学ぶ必要があります。

4

4 に答える 4

2

空白で始まるすべてを削除

POSIX 文字クラスを使用して、空白の後のすべてを sed で取り除きます。例えば:

$ echo '1024x768       75.0     70.1     60.0' | sed 's/[[:space:]]\+.*//'
1024x768

代わりに awk を使用する

sed を使用することもできますが、ネイティブのフィールド分割により、問題は awk で解決する方がはるかに優れています。例えば:

$ echo '1024x768       75.0     70.1     60.0' | awk '{print $1}'
1024x768
于 2013-03-02T23:47:42.070 に答える
0

テキストから文字列を抽出する必要がある場合grepは、最初に表示されます。

grep -o '^[^ ]*'

あなたのデータで:

kent$  echo "1024x768       75.0     70.1     60.0"|grep -o '^[^ ]*'
1024x768
于 2013-03-02T23:54:00.420 に答える
0

これはあなたのために働くかもしれません(GNU sed):

sed -r 's/\s*([0-9]+)?\.[0-9]+\s*//g;/./!d' file

これにより、10進数と周囲の空白が削除されます。行に何も残っていない場合は、空の行も削除されます。

豊富なsed素材については、こちらをご覧ください。

于 2013-03-03T00:55:24.170 に答える
0

あなたはあなたの行を処理することができます

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の回答を参照)

于 2013-03-02T23:49:18.707 に答える