假设我有以下DeletedFiles.txt
文件:
test1.zip - date-removed='6-16-2021'
test2.zip - date-removed='6-17-2021'
test3.zip - date-removed='6-17-2021'
test4.zip - date-removed='6-17-2021'
例如,我只想从test3.zip
中获取日期。
我有test3.zip
所在线路的号码。
我如何使它在运行以下代码时只返回我想要的特定文件的日期,在本例中是从文件test3.zip
返回的,这样输出将是6-17-2021
我有以下代码:
Line=$(GetLine $File)
LineNumber=`echo $Line | cut -c1-1`
DateRemoved=$(sed -e "s/.*'(.*)'/1/" DeletedFiles.txt)
echo "$DateRemoved"
但当我运行这个程序时,它会返回所有文件的日期:
6-16-2021
6-17-2021
6-17-2021
6-17-2021
当我尝试以下代码时:
Line=$(GetLine $File)
LineNumber=`echo $Line | cut -c1-1`
DateRemoved=$(sed -e "/$LineNumber/s/.*'(.*)'/1/" DeletedFiles.txt)
echo "$DateRemoved"
它返回所有行中的所有内容:
test1.zip - date-removed='6-16-2021'
test2.zip - date-removed='6-17-2021'
test3.zip - date-removed='6-17-2021'
test4.zip - date-removed='6-17-2021'
如何修复此问题,使其仅返回我想要的文件中的日期?
我会使用awk:
$ awk -F"[ ']" -v file="test3.zip" '$1 == file {print $(NF-1)}' DeletedFiles.txt
6-17-2021
只需一个简单的命令就可以解决它。grep test3.zip DeletedFiles.txt
带sed
sed -n "/^test3.zip /s/.*date-removed='([^']*).*/1/p" file.txt