行の前にx /を追加します。ここで、x は各行の変数です。

行の前にx /を追加します。ここで、x は各行の変数です。

形式(無視するテキストと数字が混在する形式)$x/のデータを追加したいと思います。$x-xyzxyz

サンプルデータ

AB-10C
CD-02E

出力

AB/AB-10C
CD/CD-02E

ハイフンの前のテキストで変数を説明する方法は?私の意見は次のとおりです。

define $x = # don't know how to do that
## and then somehow use sed to prepend
sed -i s/$/$x/ file
# I don't know if sed can handle variables though - the above one liner is from Googling

ベストアンサー1

高速で汚れたawkバージョンは次のとおりです。

awk -F- '{print $1"/"$0}' input_file > output_file

これは、-フィールド区切り文字として機能し、最初の列(つまり、最初の列より前のすべての項目-)を印刷してからを印刷し、/元の行全体を印刷することです。

同じことを行う1つの方法sedは次のとおりです。

sed -e 's;^\([^-]*\)\(.*\);\1/\1\2;' input_file > output_file

(しかし読みにくいです。)

これを簡単に行うには、bash次のものを使用できます。文字列演算:

$ foo=AB-10C
$ prefix=${foo%%-*}
$ echo ${prefix}/${foo}
AB/AB-10C

while readデータがファイルから来る場合は、ループまたは同様の方法で使用してください。

おすすめ記事