我正在尝试使用 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