我正在寻找文件系统名称(或第一列中的/),如果有斜杠或那个文件系统(与哪一个无关),我想通过不带cr的替换来加入两行。
在vi中工作正常。
:%s:\n\/fs_name:\/fs_name:g
使用:作为清晰性的分隔符
每次运行作业时,我都需要能够在脚本中复制此内容。因此,每次在vi中进行操作都不是解决方案
换句话说,我想要: 第一行
/fs second line
成为
first line /fs second line
在redhat 7上使用bash 4.2.46。sed 4.2.46(s)和vim 7.4
答案 0 :(得分:2)
sed 有点不平凡。希望我能正确理解您的意图(见下文),在这种情况下,您正在寻找类似的东西:
sed -e 'N;s#\n/#/#' input.txt
始终将行添加到模式空间。然后只需将<newline>
后跟/
的所有/
实例替换为-i
。您可以通过使用 sed 的part1
/something else
参数来实现此目的。
在浏览当前格式的问题时,我遇到了一些困难,但是我的理解是,您正在追寻这个问题。对于每个:
part1/something else
您想要获得:
s
正如William Pursell在对您的问题的评论中指出的那样。在 vi 中使用echo -e '%s#t#X#g\nwq' | ex input.txt
与调用 sed 是不同的,即使它们在历史上相关并且可以追溯到 ed 。 vi 的命令模式类似于使用 ex 编辑文件。哪个顺便说一句。您可以在脚本中执行某些操作,因为您可以通过命令行将其输入命令。例如。 :%s#t#X#g
与在 vi 中打开:wq
之后执行input.txt
和override var inputAccessoryView: UIView? {
get {
containerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)
containerView.backgroundColor = UIColor.white
containerView.isMultipleTouchEnabled = true
containerView.isUserInteractionEnabled = true
let chooseImage = UIImageView()
chooseImage.image = UIImage(named: "upload_image_icon")
chooseImage.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(chooseImage)
let gesture = UITapGestureRecognizer(target: nil, action: #selector(handleChatImage))
chooseImage.isMultipleTouchEnabled = true
chooseImage.isUserInteractionEnabled = true
chooseImage.addGestureRecognizer(gesture)
chooseImage.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
chooseImage.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
chooseImage.widthAnchor.constraint(equalToConstant: 44).isActive = true
chooseImage.heightAnchor.constraint(equalToConstant: 44).isActive = true
send.setTitle("Send", for: .normal)
send.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(send)
send.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
send.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
send.widthAnchor.constraint(equalToConstant: 80).isActive = true
send.heightAnchor.constraint(equalTo: containerView.heightAnchor).isActive = true
containerView.addSubview(self.inputTextField)
self.inputTextField.leftAnchor.constraint(equalTo: chooseImage.rightAnchor, constant: 8).isActive = true
self.inputTextField.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
self.inputTextField.rightAnchor.constraint(equalTo: send.leftAnchor).isActive = true
self.inputTextField.heightAnchor.constraint(equalTo: containerView.heightAnchor).isActive = true
divide.backgroundColor = UIColor.lightGray
divide.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(divide)
divide.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
divide.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
divide.widthAnchor.constraint(equalTo: containerView.widthAnchor).isActive = true
divide.heightAnchor.constraint(equalToConstant: 1).isActive = true
send.addTarget(self, action: #selector(sendMessage), for: .touchUpInside)
return containerView
}
}
相同。