Linux-如何从特定的行中获取字符串特定的字符串



假设我有以下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

相关内容

  • 没有找到相关文章

最新更新