我正在尝试编写一个脚本,该脚本将接受inputFile
,将其转换为小写,对其进行排序,然后将结果存储回原始文件中。我对 bash 相当陌生,所以这是我迄今为止提出的解决方案:
awk '{ print tolower($0) }' $inputFile
index=0
for i in `cat $inputFile`
do
tables[${index}]=$i
index=$(($index + 1))
done
IFS=$'\n' tables=($(sort <<<"${tables[*]}"))
rm -r $inputFile
printf "%s\n" "${tables[@]}" >> $inputFile
排序方面效果相当好,但我无法将 awk
的结果存储到原始 inputFile
中,因此排序后的表仍然包含大写字母。我尝试将 awk
的输出重定向到 > inputFile
,但这也不起作用。
示例输入文件
:
TABLE.thisisaTABLE
taBLe.hellO
HELLO.table
hi.table
所需的输出(返回到原始inputFile
):
hello.table
hi.table
table.hello
table.thisisatable
最佳答案
您可以使用 sort 的 -o
标志来执行排序和重定向回原始文件:
awk '{ print tolower($0) }' $inputFile | sort -o $inputFile
关于Bash 将文件转换为小写并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373154/