linux - 如何在新文件中转置值和输出结果
问题描述
我的数据:
"1,2,3,4,5,64,3,9",,,,,1,aine
"2,3,4,5",,,,,3,bb
"3,4,5,6,6,2",,,,,2,ff
我必须像这样在“....”分隔符内转置值:如何使用 shell 将值两个两个转置?
并在文件名 = (last-1) 列数字的新文件中输出结果(2 列)。我必须为输入文件的每一行转置。
我想要什么:
$ ls
1 2 3 4 5 6 7 8
示例:猫 1
1 2
3 4
5 64
3 9
猫 2:
3 4
5 6
6 2
猫 3:
2 3
4 5
奖励:如果我可以将每个最后的单词(最后一列)作为新文件的标题,那将是完美的。
解决方案
好的,花了一些时间,但我终于用下面的代码解决了你的问题:
#!/bin/bash
while read -r LINE; do
FILE_NAME=$(echo {$LINE##*,,,,,} | cut -d ',' -f 1 | tr -d "\"")
DATA=$(echo ${LINE%%,,,,,*} | tr -d "\"" | tr "," " ")
touch $FILE_NAME
i=1
for num in $DATA ;do
echo -n "$num"
if [[ $(($i%2)) == 0 ]]; then
echo ""
else
echo -n " "
fi
i=$((i+1))
done > $FILE_NAME
done < input.txt
在我的解决方案中,我想您的输入应该放在文件中input.txt
,并且您的所有输入行都,,,,,
作为分隔符。与您的示例输入一起工作就像一个魅力。
推荐阅读
- node.js - 每 15 秒查询一次 DB2 导致 NodeJS 中的内存泄漏
- javascript - 为什么谷歌浏览器会为 ajax 向 ebay-api 端点提供错误未知 url 方案获取请求
- ios - Xcode 编译带有链接器错误的 react-native 应用程序
- java - 使用 Python 反序列化 Java org.apache.kafka.common.serialization 序列化对象
- r - 如何将 for 循环的结果打印为 0 而不是整数(0)
- python - 如何将 pandas 数据框导出到文件,以便可以使用 pandas dan pyspark 打开它?
- ios - 如何从 HERE MAP iOS 上的纬度和经度获取完整地址
- haskell - 由于使用“打印”而产生的模棱两可的类型变量“a0”
- postgresql - 如何解决错误:无法访问文件“pglogical”:没有这样的文件或目录
- google-cloud-dataflow - Go SDK 的数据流因“InvalidProtocolBufferException”而失败