我要求我有多个文件(头文件,预告片文件和数据文件)需要合并到一个保留文件名的文件中。
输入文件
WP2024916_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_7_1.TXT (Header file)
WP2024916_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_7_2.TXT (data file)
WP2024916_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_7_3.TXT (trailer file)
WP2024078_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_3_1.TXT (Header file)
WP2024078_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_3_2.TXT (data file)
WP2024078_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_3_3.TXT (trailer file)
输出文件应该具有相同顺序的文件中的数据,文件名应该是这样的。
WP2024916_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_7.TXT
WP2024078_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_3.TXT
需要快速帮助才能实现这一目标。
提前致谢。
答案 0 :(得分:0)
假设所有文件名都是您问题中显示的格式(即9个字段由单个下划线分隔)...
一些示例数据:
cut
对于这种简单的情况,我选择使用awk
代替$ ls WP*_?_?.TXT | cut -d"_" -f1-8 | sort -u | while read -r fprefix
do
# concatenate source files
cat ${fprefix}_[123].TXT > ${fprefix}.TXT
# display concatenated files
echo "+++++++ ${fprefix}.TXT"
cat ${fprefix}.TXT
echo ""
done
+++++++ WP2024078_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_3.TXT
2024916 header
2024916 data
2024916 trailer
+++++++ WP2024916_191_FACETS_DAILY_CLAIMS_EXTRACT_20171110094055_7.TXT
2024078 header
2024078 data
2024078 trailer
(少一点打字)来提取公共/基本文件前缀:
{{1}}
答案 1 :(得分:0)
ls *_?_?.TXT | while read -r filename
do
# concatenate source files
cat $filename >> ${filename%_*}.TXT
rm $filename
done
将文件内容添加到编号部分被截断的目标文件中。
不需要cut
和sort
,但不会覆盖现有的目标文件。