我知道如何使用Python做到这一点,但我想学习如何使用awk或sed或任何最好的命令行方法。我的文件名看起来像
A1.txt
A2.txt
...
B99.txt
B100.txt
每个文件包含一行。我想将文件名中的字母附加到行尾。然后文件的内容如下:
a one file contents A
a two file contents A
...
b ninety nine file contents B
b one hundred file contents B
答案 0 :(得分:2)
如果你想更改文件,sed的-i
选项很方便:
for f in *.txt; do ltr=${f:0:1}; sed -i "s/$/ $ltr/" "$f" ; done
说明:
for f in *.txt
这将启动当前目录中所有.txt
个文件的循环。
ltr=${f:0:1}
这将从文件名
sed -i "s/$/ $ltr/" "$f"
这将用f
命名的文件中的每一行的末尾替换为空格和文件名的第一个字符。更详细:
-i
告诉sed
进行更改。
s/$/ $ltr/
是替换命令。格式为s/old/new/
,其中,old为$
,在行的末尾匹配,new为$ltr
,即空格和文件名的第一个字符。< / p>
"$f"
告诉sed
以f
命名的文件的顶级操作。
答案 1 :(得分:2)
纯粹的bash怎么样?
for file in *.txt; do
IFS= read -r line < "$file"
printf '%s %s\n' "$line" "${file::1}" > "$file"
done