sedまたは他のコマンドを使用してLinuxファイルを編集しようとしています。
これは私のファイルです:
first.xlsx
second.txt
third.ksh
ファイルtを次に変更したいと思います。
xlsx/first.xlsx
txt/second.txt
ksh/third.ksh
したがって、ドットの後のテキストを行の先頭に追加し、その後にスラッシュを追加する必要があります。
この変更を実行するには、どのsedまたは他のコマンドを使用できますか?
答え1
次のように変更できます。
sed 's|.*\.\(.*\)|\1/&|'
エスケープなしでリテラル文字として|
使用できるように区切り文字として使用されます。ファイルを所定の位置に変更する/
には、次のようにします。t
sed -i 's|.*\.\(.*\)|\1/&|' t
答え2
awk
代わりに使用してくださいsed
:
awk -F . '{ printf "%s/%s\n", $NF, $0 }' file
または、/
出力フィールドの区切り文字として使用されます。
awk -F . -v OFS=/ '{ print $NF, $0 }' file
これは.
フィールド区切り文字として扱われ、最後のフィールド($NF
)が出力され、その後にスラッシュと元の行($0
)が表示されます。
最新バージョンのGNUでは、次のようにawk
ファイルをその場で変更できます。
awk -i inplace -F . '{ printf "%s/%s\n", $NF, $0 }' file