私は助けが必要ですsed
。このために情報を探しましたが、具体的な内容が見つかりませんsed
でした。
デフォルトでは、次の形式のファイルがあります。
NAME_DIGITS_ddd-11s-21a-ds_DIGITS_DIGITS.xml
00004574
最初の下線と2番目の下線の間の文字列である最初の数字(たとえば)をコピーしたいと思います。
これを行う方法を知っていますか?
最初の数字を考えると、0
それを取り除くために何ができますか?
2つの状況の例を挙げていただければ幸いです。説明も大歓迎です。
私は反対の目標を達成しました。最初の下線と2番目の下線の間の文字を削除しましたが、sed s/_[^_]*_/_/
実際に必要な操作を実行する方法を知りませんでした。
答え1
awk -F "_" '{print $2}'
それだけです!
また、本当にsedを使用したい場合
sed 's/^[^_]*_\([^_]*\)_.*/\1/g'
sedには貪欲ではない一致がないため、_
最初の下線と2番目の下線の間にない項目を検索する必要があります!
答え2
次の形式のファイルがあり、NAME_DIGITS_ddd-11s-21a-ds_DIGITS_DIGITS.xml
下線の間の最初の数字をコピー(抽出?)したいと書きました。
セクションは下線で明確に区切られているので、次のように使用できます。
echo NAME_DIGITS_ddd-11s-21a-ds_DIGITS_DIGITS.xml | cut -d_ -f2
このコマンドは、下線を指定された区切り文字()として使用してcut
フィールド2()を抽出します。-f2
-d_
答え3
必要なコマンドは次のとおりです。
sed -ne 's/^[^0-9_][^_]*_0*\([0-9]*\)_.*/\1/p'
前にゼロを表示するには、0 *を削除してください。
答え4
その他sed
sed '/\n/!{s/_0*/\n/g;D;};P;d'
または
sed 's/_0*/\n/;/^[0-9]/!D;P;d'