gpt4 book ai didi

linux 字符串操作

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:21 25 4
gpt4 key购买 nike

我有一个文件,该文件包含以下日志,有时它会更改,但总有一部分是 FILE。我想将该文件名提取到 .xls

cat /pretupsvar/pretups_weblogs/DirectPayOutErrorLog.log | awk '{print $10}'| sed 's/]//g'

当文件名不是空格时,它显示正常,如下面的日志所示

 userList1305631236859_AS_ALL_DIST_ALL_ETOPUP_1305631236859.xls

文件,但是当文件名包含一些空间时,它会提取到该空间,例如

userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week

但在 PB 情况下我需要正确格式的文件名..

有什么解决办法吗

我想要这个输出在空间大小写::

userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week\ \one\ \payout.xls 

这样我就可以将该文件移动到另一个位置。如果它不包含空格,那么它只会给出最大为 .xls 的文件名。

Logs are ::::::::::::::::::::::::INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9854798391] [FILE NAME: userList1305631236859_AS_ALL_DIST_ALL_ETOPUP_1305631236859.xls] [MESSAGE: User not active]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9854803938] [FILE NAME: userList1305631236859_AS_ALL_DIST_ALL_ETOPUP_1305631236859.xls] [MESSAGE: No channel user exist by this mobile number]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803493705] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain] INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803493706] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803493707] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803590276] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803590277] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803590802] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: NA] [FILE NAME: userList1305647880920_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: SQL Exception:Invalid column index]  INFO [main] (DirectPayOutErrorLog.java:113) -   :: [MSISDN: 9803594351] [FILE NAME: userList1305647896930_PB_PBZONE_DLMP_RLMP_ETOPUP_Week one payout.xls] [MESSAGE: user does not belong to specified domain] 

请帮忙

最佳答案

试试这个:

sed -n -e 's/.*\[FILE NAME: \([^]]*\)].*/\1/p' /pretupsvar/pretups_weblogs/DirectPayOutErrorLog.log

应该没有必要“手动”转义空格,只要您在每次使用它时正确引用用于存储文件名的变量(假设您正在谈论 shell 脚本)。

如果你想对每次出现的每个文件名采取行动,你可以这样做:

INPUT_FILE=/pretupsvar/pretups_weblogs/DirectPayOutErrorLog.log
sed -n -e 's/.*\[FILE NAME: \([^]]*\)].*/\1/p' $INPUT_FILE | while read file ; do
mv "$file" $SOME_DESTINATION
done

如果您只想对每个文件执行一次操作,您可以轻松地将 sort -u 添加到此管道中:

sed -n -e 's/.*\[FILE NAME: \([^]]*\)].*/\1/p' $INPUT_FILE | sort -u | while read file ; do
// do stuff with "$file"
done

关于linux 字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com