Zed*_*dus 8 find io-redirection awk
我试图从 find 中获取结果,然后执行 awk 来打印前两列。然后我想将这些结果重定向到每个文件的新文件名,使用现有文件名并在名称中添加附加后缀。原始源目录中的文件保留为 file.txt,新文件命名为 file-new.txt
例如:
find -type f -iname "*.txt" -exec awk '{print $1, $2}' {} \;
Run Code Online (Sandbox Code Playgroud)
为了做到这一点,我需要添加什么?使用 sed 会是更好的选择吗?
Gil*_*il' 10
最简单的方法是使用awk的输出重定向。awk 输出重定向在简单情况下非常容易使用:第一次使用重定向时打开文件,随后重定向到相同文件名的使用现有文件描述符。
如果您想为文件名添加后缀,就像这样简单
find -type f -iname "*.txt" -exec awk '{print $1, $2 >(FILENAME "-new")}' {} +
Run Code Online (Sandbox Code Playgroud)
但是你可以对文件名进行更复杂的转换(这里只在每个输入文件的第一行重新计算):
find -type f -iname "*.txt" -exec awk '
FNR==1 {out=FILENAME; sub(/\.[^.]*$/, "-new&", out) || out = out "-new"}
{print $1, $2 >out}
' {} +
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15846 次 |
最近记录: |