Bash 将文件转换为小写并排序

标签 bash sorting awk lowercase ifs

我正在尝试编写一个脚本,该脚本将接受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/

相关文章:

Bash EOF block 中的 EOF block 可能吗?

linux - Bash 脚本,组合系统中所有用户的目录大小

bash - 转发 bash 颜色

bash - 在 awk 中设置 bash 变量

从文件中获取第 n 行的 Bash 工具

linux - 将文件从多个文件夹复制到另一个多个文件夹 Linux

java - 如何在保留初始索引的同时对这些值进行排序?

arrays - 提取数组头并保持其顺序

Javascript:按数组的第一个字符排序

linux - 替换 XML 中的值