bash +既存のパスに基づいて行末にパスを追加する方法

bash +既存のパスに基づいて行末にパスを追加する方法

次の設定ファイル(実施例1) が期待どおりに構成されていません。

ファイルの各行には、の説明に従って/grid/sdXato z)を含める必要があります。実施例2

これを行うには、bashスクリプトを書く方法を見つける必要があります。/grid/sdX行の末尾に欠けているコンテンツを追加するには?

実施例1

more dfs_data_dir_mount.hist


/grid/sdk/hadoop/hdfs/data,/
/grid/sdi/hadoop/hdfs/data,/
/grid/sdh/hadoop/hdfs/data,/
/grid/sdc/hadoop/hdfs/data,/grid/sdc
/grid/sdj/hadoop/hdfs/data,/
/grid/sde/hadoop/hdfs/data,/grid/sde
/grid/sdd/hadoop/hdfs/data,/grid/sdd
/grid/sdb/hadoop/hdfs/data,/grid/sdb
/grid/sdf/hadoop/hdfs/data,/grid/sdf
/grid/sdg/hadoop/hdfs/data,/

予想結果(例2)

/grid/sdk/hadoop/hdfs/data,/grid/sdk
/grid/sdi/hadoop/hdfs/data,/grid/sdi
/grid/sdh/hadoop/hdfs/data,/grid/sdh
/grid/sdc/hadoop/hdfs/data,/grid/sdc
/grid/sdj/hadoop/hdfs/data,/grid/sdj
/grid/sde/hadoop/hdfs/data,/grid/sde
/grid/sdd/hadoop/hdfs/data,/grid/sdd
/grid/sdb/hadoop/hdfs/data,/grid/sdb
/grid/sdf/hadoop/hdfs/data,/grid/sdf
/grid/sdg/hadoop/hdfs/data,/grid/sdg

ベストアンサー1

sed解決策:

sed -Ei 's~^(/[^/]+/[^/]+)(.*,)/$~\1\2\1~' dfs_data_dir_mount.hist
  • ~-sedサブコマンド区切り文字として扱われます。
  • [^/]+- スラッシュを除く1つ以上の文字と一致します。/
  • ^ $- それぞれ線の始点と終点です。

おすすめ記事