将文件的完整路径前置到文本文件的每一行

时间:2017-08-18 19:04:28

标签: linux bash

我可以使用以下命令将文件名添加到名为test1的文本文件中的每一行:

Option Strict On
Public Class Form1
    Dim Answer As Integer
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim Buttons() As Control = {Button1, Button2, Button3, Button4}
        Dim Rand As New Random()
        Dim Index As Integer = Rand.Next(0, Buttons.Length - 1)
        For i As Integer = 0 To 3
            Buttons(i).Text = CStr(Rand.Next(0, 100) * Rand.Next(0, 100))
        Next
        Answer = CInt(Label1.Text) * CInt(Label2.Text)
        Buttons(Index).Text = CStr(Answer)
    End Sub

    Sub CheckAnswer(ByVal Guess As Integer)
        If Guess = Answer Then
            MsgBox("Right!")
        Else
            MsgBox("Wrong!")
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
        Dim objBtn As Button = DirectCast(sender, Button)
        CheckAnswer(CInt(objBtn.Text))
    End Sub
End Class

我想将文件的完整路径添加到文件的每一行。

2 个答案:

答案 0 :(得分:2)

使用readlink应该适合您。

更多信息here

  

要获得完整路径使用:

readlink -f relative/path/to/file
     

如果您的系统上没有readlink -f,您可以使用此功能:

function myreadlink() {
  (
  cd $(dirname $1)         # or  cd ${1%/*}
  echo $PWD/$(basename $1) # or  echo $PWD/${1##*/}
  )
}

编辑:

正如评论中所提到的,编辑要使用的myreadlink函数是个好主意 pushd $(dirname $1) ... popd保存工作目录,然后在执行后恢复它。

答案 1 :(得分:1)

请您试着跟随并告诉我这是否对您有帮助。

nawk -v PWD=`pwd` '{print PWD"\,"$0}' Input_file

在上面的命令中,我正在考虑你的Input_file存在于执行此命令的当前目录中,如果此命令是任何脚本的一部分,那么你可以用它的文件名设置PWD变量,或者即使你在将此命令输入脚本之前,正在执行cd到一个路径,然后这应该可以工作。

另外,因为如果-v PWD无法正常工作,我在系统中不会发出如此公正的警告,请尝试使用-vPWD。希望这会有所帮助。

EDIT1:根据OP的要求在解决方案中添加文件名。

nawk -v PWD=`pwd` '{print PWD"/"FILENAME","$0}' Input_file

PS:如果你试图在上面转义逗号,那么你不需要放\,以防你想在输入文件的行和路径之间添加\,然后将\\,放在\这里。