
ファイルがあります。
ファイル1:
Edward-201-singer
Andrew-James-404-writer
出力が欲しいです。
Edward
Andrew-James
答え1
数字が見つかるまで、1行のすべての文字が欲しいとします。その後、-
その数値の前のオプションの値も除外します。
sed 's/-\{0,1\}[[:digit:]].*//' your-file
(GNUの場合は、または他のものにsed
置き換えることができます)。\{0,1\}
\?
sed -E 's/-?[[:digit:]].*//'
これはあなたの例を処理する必要がありますが、詳細がなければファイルのすべてを処理するとは言えません。
ファイルを所定の位置に変更したい場合、一部のsed
実装では、-i.bak
sedコマンドにaを追加するか(ファイルをにバックアップしyour-file.bak
て変更your-file
)> new-file
、最後にaを追加してnew-file
結果を書き込むことができます。
答え2
最初の数字の後のダッシュ(およびダッシュ数字)の後のすべての内容を削除するには、次の手順を実行します。
sed 's/-[0-9].*//' file
ファイルの質問に提供されたデータに基づいてfile
生成
Edward
Andrew-James
質問のタイトルに記載されているように数字のみを削除することはを使用して実行できますがtr -d '0-9' <file
、
Edward--singer
Andrew-James--writer
...あなたが望むものではありませんか?
答え3
フォーマットに関する他の情報がわからない場合でも、これは指定した両方の値に適用されます。
while read
do
echo "${REPLY%-*-*}"
done < file1